成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MYSQL中怎么實現(xiàn)邏輯架構(gòu)和并發(fā)控制

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

為延邊朝鮮族等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及延邊朝鮮族網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、延邊朝鮮族網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!


Mysql 的邏輯架構(gòu)圖如下:
MYSQL中怎么實現(xiàn)邏輯架構(gòu)和并發(fā)控制  
圖片來源:極客時間  
 
  • Server 層包括連接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器等,涵蓋 MySQL 的大多數(shù)核心服務(wù)功能,

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

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

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

    如果在緩存中,則直接返回結(jié)果。

    如果語句不在查詢緩存中,就會繼續(xù)后面的執(zhí)行階段,執(zhí)行完成后,執(zhí)行結(jié)果會被存入查詢緩存中。

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

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

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

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

  5. 執(zhí)行器
    執(zhí)行器開始執(zhí)行語句,將結(jié)果集返回給客戶端。

  • 存儲引擎層負責數(shù)據(jù)的存儲和提取。

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

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

并發(fā)控制

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

  • 讀寫鎖

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

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

  • 鎖粒度

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

  2. 行級鎖,鎖定數(shù)據(jù)行,行級鎖只在存儲引擎層實現(xiàn)。

  • 事務(wù)ACID

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

  2. 一致性(consistency)
    數(shù)據(jù)庫總是從一個一致性的狀態(tài)轉(zhuǎn)換到另一個一致性的狀態(tài),例如,完整性約束了a+b=10,一個事務(wù)改變了a,那么b也應(yīng)該隨之改變。

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

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


鎖粒度的升級和實現(xiàn)ACID特性都會增加系統(tǒng)的開銷。

一個實現(xiàn)了ACID的數(shù)據(jù)庫,相比沒有實現(xiàn)ACID的數(shù)據(jù)庫,通常會需要更強的cup處理能力,更大的內(nèi)存,和更多的磁盤空間。

大家可以根據(jù)業(yè)務(wù)是否需要事務(wù)處理,來選擇合適的存儲引擎。

  • 隔離級別

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

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

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

    RED COMMITTED說的是,一個事務(wù)只能讀到其他事務(wù)已經(jīng)提交的數(shù)據(jù),所以叫提交讀。

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

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

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

    但是無法解決幻讀的問題,所謂幻讀,指的是當某個事務(wù)再讀取某個范圍內(nèi)的記錄時,另外一個事務(wù)又在該范圍內(nèi)插入了新的記錄,當之前的事務(wù)再次讀取該范圍內(nèi)的記錄時,發(fā)現(xiàn)多了一行,會產(chǎn)生幻行。

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

    它通過強制事務(wù)串行執(zhí)行,避免了前面說的幻讀的問題。

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

MYSQL中怎么實現(xiàn)邏輯架構(gòu)和并發(fā)控制

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

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

上述內(nèi)容就是MYSQL中怎么實現(xiàn)邏輯架構(gòu)和并發(fā)控制,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:MYSQL中怎么實現(xiàn)邏輯架構(gòu)和并發(fā)控制
網(wǎng)站URL:http://jinyejixie.com/article14/ggeige.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、定制開發(fā)軟件開發(fā)、面包屑導航、關(guān)鍵詞優(yōu)化、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
常熟市| 开鲁县| 双牌县| 布尔津县| 临高县| 漠河县| 汝阳县| 澎湖县| 隆尧县| 赣榆县| 永泰县| 桐庐县| 濉溪县| 鄂托克前旗| 韶关市| 高州市| 中牟县| 鄂托克前旗| 乌鲁木齐县| 河北区| 黄石市| 张北县| 勐海县| 孟连| 水富县| 浮梁县| 获嘉县| 张北县| 老河口市| 镇宁| 富裕县| 丽水市| 浏阳市| 云南省| 迁安市| 明星| 东光县| 五寨县| 彭水| 本溪| 乐至县|