日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

深入理解MySQL底层架构,看这一篇文章就够了!

發布時間:2025/3/16 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解MySQL底层架构,看这一篇文章就够了! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面我們已經講解了,我們的系統是如何與MySQL打交道的?,我們開發的系統與MySQL本身,都維護的有線程池,管理了所有連接。看下圖回顧下:

圖1 我們的系統是如何與MySQL打交道的?

從上圖我們可以看到,我們通過數據庫連接,把要執行的SQL語句發送給MySQL數據庫進行增刪改查就可以了。

然而MySQL數據庫內部到底是怎么運轉的呢?

1、網絡連接讓工作線程去具體執行

一般,網絡服務器會分配一個線程或線程池去處理網絡連接,把網絡連接中讀取出來的數據交給另外的線程或線程池處理。如下圖所示:

圖2 多線程處理網絡請求數據

當MySQL內部的工作線程從一個網絡連接中讀取一個SQL語句后,此時會如何處理這個SQL呢?

2、SQL接口,處理接收到的SQL語句

此時工作線程會把接收到的SQL語句交給一個叫SQL接口的組件執行。SQL接口(SQL interface),是一套執行SQL語句的接口,專門用于執行我們發送給MySQL的那些增刪改查的SQL語句。

圖3 SQL接口

3、查詢解析器:讓MySQL讀懂你的SQL

接下來SQL接口怎么處理SQL語句呢?MySQL必須理解你的SQL語法,才可以去執行,要理解SQL語法,就要靠查詢解析器了。

查詢解析器(parser),就是負責對SQL語句進行解析的。按照SQL語法,對我們按照SQL語法編寫的SQL語句進行解析。比如對select name, age from user where id = 1這個語句。

1、我們要從user表里查詢數據;

2、查詢"id"字段值等于1的那行語句;

3、對查出來的那行數據提取name,age兩個字段;

圖4?SQL查詢解析器

4、查詢優化器:選擇最優的查詢路徑

通過SQL解析器解析SQL語句,知道要干什么,那么怎么干性能最高呢?

比如,上面那個查詢語句:select name, age from user where id = 1

可以有多種查詢方式:

1、直接根據id定位到一行數據,然后從中獲取name, age;

2、從表中把所有的id,name, age查出來,根據id過濾出來想要的數據;

上面是兩種SQL查詢方式(不代表MySQL的實現方式),兩種查詢方式都可以實現目標,哪種性能更好呢?

這就需要查詢優化器告訴你。

查詢優化器會告訴你,你應該按照一個什么樣的步驟和順序,去執行哪些操作,才能最快的獲取結果。現在的圖就變成這樣了:

圖5?查詢優化器

5、執行器;根據執行計劃調用存儲引擎

查詢優化器選擇了最優的查詢路徑,知道了按照一個什么樣的順序和步驟去執行這個SQL語句的計劃,然后就需要執行器調用存儲引擎的接口把SQL語句的邏輯給執行了。

比如,執行器可能會先調用存儲引擎的一個接口,去獲取user表中的第一行數據,然后判斷這個數據的id字段是否等于我們期望的值,如果不是的話,就繼續調用存儲引擎的接口,獲取user表的下一行數據。

基于上述思路,執行器,就會去根據我們的優化器生成的一套執行計劃,不停的調用存儲引擎的各種接口去完成SQL語句的執行。

圖6 執行器

6、調用存儲引擎,真正執行SQL語句

執行器把執行計劃交給最底層的存儲引擎,就會真正的執行SQL語句了。

執行SQL語句,無非是增刪改查數據,那么數據是存放在哪里呢?

數據要么是放在內存里,要么是放在磁盤上,所有存儲引擎會按一定的步驟去查詢內存緩存的數據,更新磁盤數據,等等。

MySQL的架構設計中,SQL接口,SQL解析器,查詢優化器,都是通用的,但存儲引擎是有很多種的。比如常見的innoDB,myisam。

互聯網公司一般選用innoDB存儲引擎。

圖7 MySQL底層架構

搞清楚了MySQL的底層架構,那么具體執行一條SQL時是怎樣的呢?下節我們會講。

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

總結

以上是生活随笔為你收集整理的深入理解MySQL底层架构,看这一篇文章就够了!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。