關於MySQL內核,一定要知道的!

近一個多月,寫了一些MySQL內核的文字,稍作總結,希望對大家有幫助。
1.InnoDB,爲何併發如此之高?
文章介紹了:
(1)什麼是併發控制;
(2)併發控制的常見方法:鎖,數據多版本;

(3)redo,undo,回滾段的實踐;

(4)InnoDB如何利用回滾段實現MVCC,實現快照讀。

結論是,快照讀(Snapshot Read),這種不加鎖的讀,是InnoDB高併發的核心原因之一。

番外篇:《快照讀,在RR和RC下的差異

快照讀,在可重複讀讀提交兩種事務隔離級別下,有微小的差異,文章通過案例做了簡單敘述。
2.InnoDB的七種鎖

先從一個有意思的案例,引出了鎖的話題。

假設有數據表:

t(id int PK, name);

目前的記錄是:

10, shenjian

20, zhangsan

30, lisi

事務A先執行,並且處於未提交狀態:

delete from t where id=40;

事務A想要刪除一條不存在的記錄

事務B後執行:

insert into t values(40, ‘c’);

事務B想要插入一條主鍵不衝突的記錄

問題1事務B是否阻塞

問題2:如果事務B阻塞,鎖如何加在一條不存在的記錄上呢?

問題3:事務的隔離級別,索引類型,是否對問題1和問題2有影響呢?

接下來的幾篇文章詳細的介紹了InnoDB內核中的七種鎖。

InnoDB插入自增列,是表鎖嗎?

這一篇,介紹了InnoDB內核的第一種鎖,自增鎖(Auto-inc Locks)

InnoDB併發插入,會不會互斥?

這一篇,介紹了InnoDB內核的三種鎖:

 ●  共享/排他鎖Shared and Exclusive Locks)
 ●  意向鎖Intention Locks)
 ●  插入意向鎖Insert Intention Locks)

InnoDB,select爲何會阻塞insert?

這一篇,介紹了InnoDB內核最有意思的三種鎖:

 ●  記錄鎖(Record Locks)
 ●  間隙鎖(Gap Locks)
 ●  臨鍵鎖(Next-Key Locks)

這幾篇文章,有大量的案例,相信大家會有收穫。

3.索引到底是怎麼實現的?

這兩篇文章很重要,講解MySQL索引底層實現,也是閱讀量最高的幾篇之一。

數據庫索引,到底是什麼做的?

這一篇,介紹了哈希索引樹索引數據預讀/局部性原理B+樹的優化思路

MyISAM與InnoDB的索引差異究竟是啥?

在上一篇基礎之上,用圖例講述了MyISAM與InnoDB的索引差異與實踐。

4. InnoDB如何巧妙實現,事務的4種隔離級別?
聊MySQL,聊鎖,聊事務,一定逃不開事務的隔離級別,本文簡述了
讀未提交讀提交可重複讀串行化的巧妙實現。

5.別廢話,各種SQL到底加了什麼鎖?
這是一篇直接給結論的文章:

 ●  普通select
 ●  加鎖select
 ●  update與delete
 ●  insert

各類SQL語句分別加了什麼鎖?

6.超讚,InnoDB調試死鎖的方法!
死鎖的復現和調試都是很困難的,本文通過幾個案例,分享了復現與調試併發事務+死鎖的方法,大家一定要動起手來,這樣印象纔會更加深刻。

7.MySQL不爲人知的主鍵與唯一索引

本文分享了MySQL中最常見的兩類約束:主鍵與唯一索引約束,並細聊了這兩類約束在InnoDB與MyISAM上的差異,有個MyISAM大坑,一定要注意繞過。

8.其他
InnoDB的五項最佳實踐,知其所以然
這是一篇聊InnoDB實踐的文章:關於count(*),關於全文索引,關於事務,關於外鍵,關於行鎖與表鎖,不僅會使用,還要知其所以然。

MySQL5.6,InnoDB的一些新特性

MySQL5.6,介紹了InnoDB的一些新特性,例如:居然能夠支持memcached插件了,居然能把InnoDB表放在DVD或者CD裏,是不是有點意思?
這個數據庫內核系列,寫了約1個多月,查閱了
大量官網英文資料,也自己動手實踐了很多案例,以確保知識的體系性與準確性,希望大家有收穫。

最近,回顧了一下18年的文章,下面這一篇是最有希望破10W+的

架構師之路17年精選80篇

煩請大夥幫忙轉發一下這篇,未來樓主能夠自豪說“俺也是寫過10W+的人”。

最近微信改版,很多朋友反饋看不到最新的文章,有個辦法是,置頂,哇咔咔。

畫外音:有位網友的留言讓我很感動,“這是浮躁的自媒體圈,原創與乾貨多,且值得置頂的一股清流”。

知其然,知其所以然。

思路比結論重要。


原文發佈時間爲:2018-10-9

本文作者: 58沈劍

本文來自雲棲社區合作伙伴“架構師之路”,瞭解相關信息可以關注“架構師之路”。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章