高效能MySQL筆記第一章
最上層是連線處理,網路認證等功能;第二層是查詢優化,分析,優化,快取,以及SQL內建函式的實現、跨儲存引擎的操作 例如檢視,儲存過程等的實現;第三層就是各個不同的儲存引擎,儲存引擎提供一些基礎的函式實現供上層呼叫。
MySQL會使用執行緒池快取建立的執行緒,每個連線對應一個執行緒。
-
併發控制
- 讀寫鎖
- 表鎖
- 行鎖
事務,ACID。
隔離級別:
- 未提交讀 - 已提交讀 - 可重複讀 - 序列
事務:
事務日誌可以幫助提高事務的效率。使用事務日誌,儲存引擎在修改表的資料時只需要修改其記憶體拷貝,再把該修改行為記錄到持久 在硬碟上的事務日誌中,而不用每次都將修改的資料本身持久到磁碟。事務日誌採用的是追加的方式,因此寫日誌的操作是磁碟上 一小塊區域內的順序I/O,而不像隨機I/O需要在磁碟的多個地方移動磁頭,所以採用事務日誌的方式相對來說要快得多。事務日誌 持久以後,記憶體中被修改的資料在後臺可以慢慢地刷回到磁碟。目前大多數儲存引擎都是這樣實現的,我們通常稱之為 預寫式日誌(Write-AheadLogging),修改資料需要寫兩次磁碟。
多版本併發控制(MVCC):
使用記錄快照的方式來實現,每一行資料都有一個版本號。具體實現待研究,據說是對修改的資料都是寫在快照上,因此讀的資料都會 一致,TODO。