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

2021-08-28 22:26:45 字數 2608 閱讀 7180

近乙個多月,寫了一些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核心的三種鎖:

《innodb,select為何會阻塞insert?》

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

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

這兩篇文章很重要,講解mysql索引底層實現,也是

閱讀量最高

的幾篇之一。

《資料庫索引,到底是什麼做的?》

這一篇,介紹了雜湊索引樹索引資料預讀/區域性性原理b+樹的優化思路

《myisam與innodb的索引差異究竟是啥?》

4. 《innodb如何巧妙實現,事務的4種隔離級別?》

聊mysql,聊鎖,聊事務,一定逃不開事務的隔離級別,本文簡述了

讀未提交

,讀提交

,可重複讀

,序列化

的巧妙實現。

5.《別廢話,各種sql到底加了什麼鎖?》

這是一篇直接給結論的文章:

各類sql語句分別加了什麼鎖? 6.

《超讚,innodb除錯死鎖的方法!》

死鎖的復現和除錯都是很困難的

,本文通過幾個案例,分享了復現與除錯併發事務+死鎖的方法,大家一定要

動起手來

,這樣印象才會更加深刻。

7.《mysql不為人知的主鍵與唯一索引》

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

其他《innodb的五項最佳實踐,知其所以然》

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

《mysql5.6,innodb的一些新特性》

mysql5.6,介紹了innodb的一些新特性,例如:居然能夠支援

memcached外掛程式

了,居然能

把innodb表放在***或者cd裡

,是不是有點意思?

這個資料庫核心系列,寫了約1個多月,查閱了

大量官網英文資料

,也自己

動手實踐了很多案例

,以確保知識的體系性與準確性,希望大家有收穫。

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

煩請大夥幫忙**一下這篇,未來樓主能夠自豪說「俺也是寫過10w+的人」。

比結論重要。

-分享可落地

的技術文章

感謝大家一直以來對「架構師之路」的支援。

謝謝大家!

關於水分率 一定要知道的知識點

愛美之心人皆有之,健身的朋友們越來越多,人體內的各種指標總會引起人們的注意,對於熱愛健身或者是在嘗試健身的人來說,各種指標的均衡更為重要。除了人們關心的脂肪率和肌肉率之外,水分率也是尤為重要。水是維持人類生命和健康的六大基本營養素之一。現在,我們進入水分率的世界。什麼是水分率?水分率其實就是人體內包...

關於牛仔褲你一定要知道的16條

關於牛仔褲你一定要知道的16條 1 買牛仔褲,褲腰處留出3厘公尺左右的富餘.下次買牛仔褲,你可以並不卡著腰買褲.3厘公尺左右的富餘能夠讓你的仔褲正好吊再髖骨上,就像你看到ck廣告模特一樣 另外,你坐下的時候也不怕把扣子崩開.2 牛仔褲買長不買短很多牛仔褲會再洗後縮水,所以你賣牛仔褲的時候應該買稍微長...

做測試的一定要知道EFI Shell 命令參考

efi shell 命令參考 命令說明 引導命令 efi shell與 npartition 引導有關的命令。autoboot設定 檢視 自動引導超時變數。bcfg顯示 或修改 驅動程式 或引導配置 boottest設定 或檢視 boottest 位。dbprofile 顯示 修改要由lanboot...