一條sql語句的執行過程

  • 一條sql 語句是如何在數據庫裏執行的呢?
  • 查詢緩存,分析器,優化器,執行器,返回結果。
  • 查詢緩存:是指一條sql到來時先去緩存裏查看該sql是否已經查詢過,map形式存儲該語句和其執行結果,key由sql語句和版本等組成,value是執行結果。自,mysql 8.0之後緩存去除。
  • 去除緩存的原因:一是 sql 語句要求嚴格一致,即兩條sql語句完全一致,不能多空格之類也不能少。導致緩存命中率過低。
  • 二是  只要有更新的操作,則該表相關的所有緩存清空。導致利用率過低,緩存操作粒度太粗。非常不實用。在實際的開發中一張表的數據更新時相當頻繁,除了一些配置表。
  • 緩存沒有命中後,則到分析器。
  • 分析器: 首先進行分詞分析,識別關鍵字和非關鍵字。如select是關鍵字。分詞過後進行語法分析驗證,如select則驗證select語法樹。驗證過後,則進行權限驗證。即驗證登錄用的執行權限。
  • 優化器: 經過分析器後,優化器則負責進一步優化sql語句行程的樹。優化器則可以提高mysql的執行效率,如最大可能利用索引,查詢更小數據量的表等。
  • 優化器過後,則就調用mysql引擎提供的API進行查詢獲得執行結果。執行結果存入緩存,8.0後沒有緩存。
  • 到此一條mysql語句執行完畢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章