近乙個多月,寫了一些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...