1. 程式人生 > >一條查詢語句是如何執行的

一條查詢語句是如何執行的

 

資料庫的內建函式,儲存過程,檢視,觸發器都在server層

聯結器:連線之後如果沒有後續操作就屬於一個空閒連線,資料庫許可權也在這裡。

如果連線之後很長時間沒有後續操作,就會斷開連線,如果這時去查詢就會丟擲異常,長連線就是一直使用這個連線,短連線就是執行了幾次查詢就會斷開連線。

所以建議使用長連線,但是長連線有非常佔用記憶體,比如一個很大的查詢。如果記憶體積壓就會記憶體溢位,mysql自動重啟

一:定期斷開連線,從新連線,尤其是對於大的查詢

二:mysql 5.7可以設定mysql_reset_connection ,這回重新初始化連線資源,但是不會從新許可權驗證,只是回到連線的初始狀態

 

查詢快取:先去快取中找沒有沒執行過,有就返回,沒有就執行,然後加入快取,但是每一次對錶的更新操作都會清空快取,所以不建議使用快取。

分析器:詞法分析,語法分析

優化器:索引的選擇

執行器:取符合條件的第一行,然後往後執行,直到取出所有符合條件的行,當使用索引的時候也一樣

慢查詢日誌中的一個row_examined看出掃描了多少行