博客 > MYSQL知識:MYSQL的邏輯架構和并發(fā)控制淺析
瀏覽量:2135次評論:0次
作者:銳成網絡整理時間:2024-08-20 17:58:16
Mysql是現在最流行的數據庫之一,下面我們來了解下Mysql的邏輯架構是怎么樣的以及并發(fā)控制的特點。
MYSQL的邏輯架構
Server 層包括連接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器等,涵蓋 MySQL 的大多數核心服務功能,以及所有的內置函數(如日期、時間、數學和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發(fā)器、視圖等。
1、連接器
連接器負責跟客戶端建立連接、獲取權限、維持和管理連接。
2、查詢緩存
MySQL 拿到一個查詢請求后,會先到查詢緩存看看,之前是不是執(zhí)行過這條語句。
如果在緩存中,則直接返回結果。
如果語句不在查詢緩存中,就會繼續(xù)后面的執(zhí)行階段,執(zhí)行完成后,執(zhí)行結果會被存入查詢緩存中。
3、分析器
分析器先會做“詞法分析,語法分析”。
你輸入的是由多個字符串和空格組成的一條 SQL 語句,MySQL 需要識別出里面的字符串分別是什么,代表什么。
4、優(yōu)化器
優(yōu)化器是在表里面有多個索引的時候,決定使用哪個索引;
或者在一個語句有多表關聯(join)的時候,決定各個表的連接順序。
5、執(zhí)行器
執(zhí)行器開始執(zhí)行語句,將結果集返回給客戶端。
存儲引擎層負責數據的存儲和提取。
其架構模式是插件式的,支持 InnoDB、MyISAM、Memory 等多個存儲引擎。
現在最常用的存儲引擎是 InnoDB,它從 MySQL 5.5.5 版本開始成為了默認存儲引擎。
MYSQL的并發(fā)控制
1、讀寫鎖
讀鎖是共享的,多個客戶端同一時間可以讀同一個資源,互補干擾。
寫鎖是是排他的,也就是說一個寫鎖會阻塞其他的寫鎖和讀鎖。
2、鎖粒度
表鎖,鎖定整張表,表鎖是server層高的鎖,該鎖會忽略存儲引擎的鎖機制。
行級鎖,鎖定數據行,行級鎖只在存儲引擎層實現。
3、事務ACID
鎖粒度的升級和實現ACID特性都會增加系統(tǒng)的開銷。
一個實現了ACID的數據庫,相比沒有實現ACID的數據庫,通常會需要更強的cup處理能力,更大的內存,和更多的磁盤空間。
大家可以根據業(yè)務是否需要事務處理,來選擇合適的存儲引擎。
4、隔離級別
Mysql的InnoDB存儲引擎默認的隔離級別的是REPEATABLE READ(可重復讀),并且通過間隙鎖(next-key locking)策略防止幻讀的出現。
間隙鎖使得InnoDB不僅僅鎖定查詢涉及的行,還會對索引中的間隙進行鎖定,以防止幻行的插入。
重要聲明:本文來自編程我也會,經授權轉載,版權歸原作者所有,不代表銳成觀點,轉載的目的在于傳遞更多知識和信息。
相關文章推薦
2025-05-27 11:53:22
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
我的評論
還未登錄?點擊登錄