面试题:一条 sql 语句是如何经过 MySQL 的体系结构的?
??點擊上方?好好學java?,選擇?星標?公眾號
重磅資訊、干貨,第一時間送達 今日推薦:有了這 4 款工具,老板再也不怕我寫爛SQL了個人原創+1博客:點擊前往,查看更多 作者:李福春 來源:https://www.cnblogs.com/snidget/p/12614449.htmlmysql體系結構
mysql的題解結構可以分成3個部分。列舉如下:
mysql-client: 比如一個命令行,或者使用java的JDBC發送sql語句
mysql-server: 分為5個部分
連接器 (管理連接權限認證) 查詢緩存 (命中則緩存起來) 分析器 (詞法 語法分析) 優化器 (執行計劃生成,索引選擇) 執行器 (操作,返回結果)
mysql-存儲引擎:負責存儲數據,提供讀寫接口(建表的時候指定MyISAM,InnoDB , Memory)
一條sql語句的執行過程
一條sql語句在mysql體系中的流轉過程:
1,連接器:首先打開命令行,指令:mysql -h?????????????
{port} -u${user} -p ,輸入密碼。使用連接器連接服務端;連接成功之后,權限修改不會影響當前連接,連接的有效期默認是8個小時;連接之后,執行過程中使用內存會持續增加,應該定時重置連接狀態,防止oom;
2,查詢緩存:如果查詢比較頻繁,按照key,value的方式放入緩存,命中緩存則直接返回;如果更新比較頻繁,建議不要使用查詢緩存,query_cache_type=demand ,然后如果需要,可以在select后面帶上 SQL_CACHE ; mysql8.0之后移除了查詢緩存;
3,分析器:解析語法和詞法,如果語法錯誤,會直接給出提示;
4,優化器:比如join語句執行方法的邏輯,如何選擇索引等;
5, 執行器:核對執行權限,調用存儲引擎的接口,按照語法循環執行,返回結果集。可以觀察 row_examined ,引擎掃描行數。
小結
本節介紹了mysql的體系結構。
然后跟蹤了一條查詢sql在體系結構中流轉過程。
總結
以上是生活随笔為你收集整理的面试题:一条 sql 语句是如何经过 MySQL 的体系结构的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享一个牛逼的 Java 开源后台管理系
- 下一篇: 一文读懂 volatile 关键字