91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL中怎么實現邏輯架構和并發控制

發布時間:2021-07-13 15:29:55 來源:億速云 閱讀:158 作者:Leah 欄目:大數據

本篇文章為大家展示了MYSQL中怎么實現邏輯架構和并發控制,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。


Mysql 的邏輯架構圖如下:
MYSQL中怎么實現邏輯架構和并發控制  
圖片來源:極客時間  
 
  • Server 層包括連接器、查詢緩存、分析器、優化器、執行器等,涵蓋 MySQL 的大多數核心服務功能,


    以及所有的內置函數(如日期、時間、數學和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等。


  1. 連接器
    連接器負責跟客戶端建立連接、獲取權限、維持和管理連接。


  2. 查詢緩存
    MySQL 拿到一個查詢請求后,會先到查詢緩存看看,之前是不是執行過這條語句。


    如果在緩存中,則直接返回結果。

    如果語句不在查詢緩存中,就會繼續后面的執行階段,執行完成后,執行結果會被存入查詢緩存中。


  3. 分析器
    分析器先會做“詞法分析,語法分析”。


    你輸入的是由多個字符串和空格組成的一條 SQL 語句,MySQL 需要識別出里面的字符串分別是什么,代表什么。


  4. 優化器
    優化器是在表里面有多個索引的時候,決定使用哪個索引;


    或者在一個語句有多表關聯(join)的時候,決定各個表的連接順序。


  5. 執行器
    執行器開始執行語句,將結果集返回給客戶端。


  • 存儲引擎層負責數據的存儲和提取。

    其架構模式是插件式的,支持 InnoDB、MyISAM、Memory 等多個存儲引擎。


    現在最常用的存儲引擎是 InnoDB,它從 MySQL 5.5.5 版本開始成為了默認存儲引擎。


并發控制

下來我們來看看Mysql在并發控制方面都有哪些特點。

  • 讀寫鎖


  1. 讀鎖是共享的,多個客戶端同一時間可以讀同一個資源,互補干擾。


  2. 寫鎖是是排他的,也就是說一個寫鎖會阻塞其他的寫鎖和讀鎖。


  • 鎖粒度


  1. 表鎖,鎖定整張表,表鎖是server層高的鎖,該鎖會忽略存儲引擎的鎖機制。


  2. 行級鎖,鎖定數據行,行級鎖只在存儲引擎層實現。


  • 事務ACID


  1. 原子性(atomicity)
    一個事務必須被視為一個不可分割的最小工作單元,整個事務要么全部執行成功,要么全部失敗回滾,不可能一部分成功,一部分失敗,這就是原子性。


  2. 一致性(consistency)
    數據庫總是從一個一致性的狀態轉換到另一個一致性的狀態,例如,完整性約束了a+b=10,一個事務改變了a,那么b也應該隨之改變。


  3. 隔離性(isolation)
    通常來說,一個事務所做的修改在最終提交以前,對其事務時不可見的。


  4. 持久性(durability)
    一旦事務提交,則其所做的修改就會永久的保存到數據庫中。



鎖粒度的升級和實現ACID特性都會增加系統的開銷。

一個實現了ACID的數據庫,相比沒有實現ACID的數據庫,通常會需要更強的cup處理能力,更大的內存,和更多的磁盤空間。

大家可以根據業務是否需要事務處理,來選擇合適的存儲引擎。

  • 隔離級別


  1. RED UNCOMMITTED(未提交讀)
    在RED UNCOMMITTED級別,事務中的修改,即使沒提交,對其他事務也是可見的。


    事務可以讀取未提交的數據,這被稱為“臟讀”(Dirty Read),因為讀取的很可能是中間過程的臟數據,而不是最終數據。


  2. RED COMMITTED(提交讀)
    大多數數據庫系統默認的隔離級別都是RED COMMITTED,但是MYSQL不是。


    RED COMMITTED說的是,一個事務只能讀到其他事務已經提交的數據,所以叫提交讀。


    這個事務級別也叫做不可重復讀(nonrepeatableread),因為兩次同樣的查詢,可能會得到不同的結果。


  3. REPEATABLE READ(可重復讀)
    REPEATABLE READ解決了臟讀的問題。


    該級別保證了在同一事務中多次讀取同樣的記錄結果是一致的。


    但是無法解決幻讀的問題,所謂幻讀,指的是當某個事務再讀取某個范圍內的記錄時,另外一個事務又在該范圍內插入了新的記錄,當之前的事務再次讀取該范圍內的記錄時,發現多了一行,會產生幻行。


  4. SERIALIZABLE(可串行化)
    SERIALIZABLE是最高級別的隔離。


    它通過強制事務串行執行,避免了前面說的幻讀的問題。


    簡單來說,SERIALIZABLE會在讀取的每一行數據上都加鎖,所以可能導致大量的超時和鎖爭用的問題。

MYSQL中怎么實現邏輯架構和并發控制

Mysql的InnoDB存儲引擎默認的隔離級別的是REPEATABLE READ(可重復讀),并且通過間隙鎖(next-key locking)策略防止幻讀的出現。

間隙鎖使得InnoDB不僅僅鎖定查詢涉及的行,還會對索引中的間隙進行鎖定,以防止幻行的插入。

上述內容就是MYSQL中怎么實現邏輯架構和并發控制,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁山县| 荥经县| 修武县| 淮南市| 永年县| 外汇| 木里| 安阳县| 陵水| 陆川县| 常熟市| 东莞市| 寻乌县| 阿图什市| 绵竹市| 缙云县| 夏邑县| 石渠县| 西宁市| 阿合奇县| 江源县| 贵阳市| 耿马| 明星| 广南县| 上林县| 开封市| 兰西县| 五台县| 罗城| 梁平县| 建瓯市| 莫力| 德保县| 墨江| 淮滨县| 阳泉市| 凤翔县| 浠水县| 黄龙县| 客服|