學習Mysql實戰45講總結
1.基本執行流程相關組件
2.相關組件說明
2.1 連接器
(1)訪問數據庫,需要ip+端口+密碼走tcp 協議進行連接
(2)連接器進行密碼相關權限驗證
(3)建立連接,長連接或短連接,由wait_timeout 參數控制
Q1長短連接區別?
短連接時間短,查詢幾次就斷開了,頻繁的斷開重連效率極低,故大多數時間選擇長連接。長連接一致保持與客戶端連接,時間很長。
Q2那全部使用長連接不就好了?
長連接長時間不斷開會導致緩存越來越多,每次查詢,之前操作引起的相關緩存一直存在,導致OOM.
解決方案:1.採用定期斷開 2.採用mysql5.7 版本,mysql_reset_connection可以保持連接又還原到初始狀態
2.2查詢緩存
緩存機制:
上次的查詢結果會進行緩存,下次查詢的時候,會判斷去緩存中查詢
不建議使用原因:
更新一次相關緩存都要清楚,無法保證insert update 的情況下,緩存使用弊大於利
使用方式
(1)關閉緩存 設置query_cache_type DEMAND
(2)指定查詢使用緩存 select SQL_CACHE * from t where a=1;
補充:
8.0版本以後查詢緩存從mysql中移除了
2.3分析器
語法 ,語義分析 ,判斷是不是寫錯了,查錯了,有沒有符合SQL語法的規範(規範檢查),有沒有當前庫的當前表當前字段(現有情況檢查)
2.4優化器
選擇執行方案,最優的索引選擇
2.5執行器
進行執行方案執行,執行前會校驗有沒有相關權限(因爲像存儲計劃等sql 在這個階段纔會發現沒有讀取查詢權限)
2.6存儲引擎
底層內存及算法,提供讀寫接口