您好,登錄后才能下訂單哦!
本篇內容介紹了“Mysql的查詢流程是怎樣的”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Mysql有三種連接方式,包括:
TCP/IP協議,遠程連接使用,常規可采用ip端口建立連接。
命名管道或共享內存,windows下可以采用命名管道或共享內存進行進程間通信方式,但要求服務器端與連接客服端在同一臺機器。
Unix域套接字,類Unix操作系統可以使用Unix域套接字文件來進行進程間通信。
Mysql會限制同時連接服務器的數量,系統變量(后面我們在解釋什么是系統變量、還有狀態變量):max_connections表示的是最大連接數(默認151)。
Mysql8.0之前會對查詢結果建立緩存,第二次使用同樣的語句查詢時會先看緩存里面有沒有,如果有直接返回查詢結果。
注:從MySQL 5.7.20開始,不推薦使用查詢緩存,并在MySQL 8.0中刪除(個人覺得,項目小并發量不是很高的可以用,但是并發量不高,相對來說緩不緩存其實影響也不大。但是項目大,數據變更頻繁,緩存的開銷就會很大,所以無論項目大小,保持關閉狀態都是可以的)
前后查詢語句必須一樣,兩個查詢請求在任何字符上的不同(例如:空格、注釋、大小寫),都會導致緩存不命中。
如果查詢請求中包含某些系統函數、用戶自定義變量和函數、一些系統表,如 mysql 、information_schema、 performance_schema 數據庫中的表,那這個請求就不會被緩存。
MySQL的緩存系統會監測涉及到的每張表,只要該表的結構或者數據被修改,如對該表使用了INSERT、 UPDATE、DELETE、TRUNCATE TABLE、ALTER TABLE、DROP TABLE或 DROP DATABASE語句,那使用該表的所有高速緩存查詢都將變為無效并從高速緩存中刪除。
這一階段主要是針對未命中緩存的查詢語句進行語法檢查,并且將查詢語句中使用的表、各種查詢條件都提取出來放到MySQL服務器內部使用的一些數據結構上來。
mysql會針對我們書寫的查詢語句進行優化,生成一個執行計劃(可以在查詢語句前面加explain查看執行計劃,具體執行計劃怎么看,后面有空再總結吧),這個執行計劃可以看到將使用哪些索引進行查詢,表之間優化后的連接順序等東西。
MySQL從2007年開始提供了插件式的存儲引擎API,一般來說,連接管理、查詢緩存、語法解析、查詢優化這些并不涉及真實數據存儲的功能我們稱為MySQL server的功能,但真正執行查詢的是存儲引擎的功能,存儲引擎真正執行數據存取操作,存儲引擎有很多,都是基于mysql的API規范進行開發的。包括下列:
其中,InnoDB和MyISAM是我們最常用的,Mysql的默認存儲引擎是InnoDB。
“Mysql的查詢流程是怎樣的”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。