Myqsl的結構如下:
連接器:負責進行鑑權,當進行數據庫連接時,會進入連接器進行鑑權。
解析器:對sql進行解析,如果sql不準確,將會在這層拋出異常。如果開啓了緩存,將進行緩存查詢。
優化器:sql將會進行優化,比如確認join的鏈接順序,有多個單列索引時,應該使用哪個。
執行器:執行腳本,如果沒有設置默認是調用innodb引擎。
緩存:如果開啓緩存,是以key-value的形式存儲,key是執行的sql,value是data,但是要慎用緩存,因爲緩存會頻繁的寫入數據,會導致緩存頻繁刷新。緩存命中率會降低。
query_cache_type設置成DEMAND可以不使用緩存設置。sql使用SQL_CACHE可以直接使用緩存。mysql8.0直接去掉了緩存模塊。