MySQL體系架構

2022-09-20 04:18:10 字數 1914 閱讀 8110

mysql體系結構如下圖:

1.mysql體系分為兩部分:

1.1.mysql server層

許可權判斷:判斷使用者是否有許可權訪問某庫某錶的或者表裡面某行。

查詢快取:通過query cache進行操作,如果在query cache中則直接返回結果給客戶端。線上環境最好把query cache關閉掉將query_cache_size及query_cache_type設定為0即可。5.6之後的mysql預設是關閉的

解析器:對sql語句進行解析,判斷sql語句的語法是否正確。

預處理器:解析器無法處理的語義在這裡進行處理

優化器:對sql語句進行改寫和相應的優化,並產生執行計畫

1.2.儲存引擎層

mysql本身支援的儲存引擎還是比較多的,但是目前大多數人用到的還是innodb和myisam,其中myisam在mysql 8.0以後將不在支援。預設的引擎是innodb.

2.innodb體系架構

mysql體系結構中的儲存引擎層主要了解innodb,因為它也是目前比較常用的乙個儲存引擎。

innodb包括三部分記憶體、程序、磁碟檔案

innodb體系結構如下圖所示:

2.1.innodb記憶體結構

innodb的記憶體結構可以分為sga(系統全域性區)和pga(程式快取區)

sga:

innodb_buffer_pool:用來快取資料、索引、插入緩衝、資料字典

innodb_log_buffer:事務在記憶體中的緩衝,即redo log buffer的大小

innodb_addition_mem_pool_size:儲存字典資訊及其他資料結構的記憶體池

pga:

sort_buffer_size:sql語句在記憶體中的臨時排序

join_buffer_size:表連線使用,用於bka

read_buffer_size:表順序掃瞄的快取,只能應用於myisam表儲存引擎

read_rnd_buffer_size:mysql隨機讀緩衝區大小,用於做mrr

tmp_table_size:sql語句在排序或者分組時沒有用到索引,就會使用臨時表空間

max_heap_table_size:管理heap、memory儲存引擎表

2.2innodb的程序

master thread:四個迴圈,主迴圈、後台迴圈、重新整理迴圈、暫停迴圈,其中主迴圈分為兩種狀態1秒和10秒

1s:重新整理日誌到磁碟

重新整理髒資料到磁碟

執行合併插入緩衝操作

產生checkpoint

刪除無用的table cache

如果當前沒有使用者轉入後台迴圈

10s:

重新整理日誌到磁碟

重新整理髒資料到磁碟

執行合併插入緩衝操作

產生checkpoint

清除無用的undo 頁

io_thread:

預設mysql應該是開啟了10個io_thread,其中4個read_thread,4個write_thread,1個redo_log thread 1個insert buffer thread

redo log buffer負責將日子緩衝中的內容重新整理到redo log檔案中,insert buffer thread,將插入緩衝中的內容重新整理到磁碟,read/write thread是資料度的讀寫請求執行緒。

page clean thread:

負責將髒資料重新整理到磁碟的執行緒

purge thread

負責刪除無用undo頁

MySQL架構體系

了解mysql必須牢牢記住其體系結構圖,mysql是由sql介面,解析器,優化器,快取,儲存引擎組成的 connectors指的是不同語言中與sql的互動 management serveices utilities 系統管理和控制工具 connection pool 連線池。管理緩衝使用者連線,執...

mysql體系架構

1 connectors指的是不同語言中與sql的互動 2 management serveices utilities 系統管理和控制工具 3 connection pool 連線池 管理緩衝使用者連線,執行緒處理等需要快取的需求。4 sql inte ce sql介面 接受使用者的sql命令,並...

MySQL體系架構

資料庫管理系統由乙個互相關聯的資料的集合和一組用以訪問這些資料的程式組成。這個資料集合通常稱為資料庫。在形成資料庫管理系統之前,資料的管理採用一般的檔案處理系統。檔案處理系統存在以下弊端 資料庫系統通過相關程式管理維護檔案系統來解決以上弊端。以下是乙個一般的資料庫系統架構圖 mysql由以下幾部分組...