mysql 原理 buffer pool併發

2022-03-20 17:12:53 字數 803 閱讀 3721

一 簡介 buffer pool的併發訪問機制的改進與侷限

二 詳細

1 innodb_buffer_pool_instance

1 當較多資料載入到記憶體時, 使用多快取例項能減少快取爭用鎖情況。

2 全域性大鎖 buffer pool mutex 依然存在,直到8.0才進行拆分解決

2 page_cleaner的出現

1 出現了單獨的page_cleaner執行緒,獨立承擔了刷頁工作,減少了master的負擔

2 出現了多執行緒的page_cleaner,加快了髒頁重新整理的效率

3 page_celaner不能解決的問題

基本就是高併發下page_cleaner超負荷工作時進行的ckpt,週期性的ckpt並不在考慮範圍內

1 redo不夠用,覆蓋前強制進行ckpt

2 lru列表已到達空閒頁最少的閾值,需要強制進行ckpt

4 purge的出現

1 出現了單獨的purge執行緒,獨立承擔了清理undo和刪除標記的工作,減少了master的負擔

5 dblwr成為重要的單點瓶頸。

1 非ssd硬碟必須開啟double write buffer。

2 涉及到的鎖 分為兩部分:single page flush和batch flush,

3 即使拆分了多個page cleaner,最終擴充套件性還是受限於dblwr

4 官方已經開始對此開始優化工作

三 總結

1  只是根據**核心週報寫的一點自己的總結,還會繼續補充

2 以上出現的幾個關鍵點解讀在我的部落格裡都有體現,感興趣的可以去看

詳解MySQL中的緩衝池(buffer pool)

mysql 中資料是要落盤的,這點大家都知道。讀寫磁碟速度是很慢的,尤其和記憶體比起來更是沒的說。但是,我們平時在執行 sql 時,無論寫操作還是讀操作都能很快得到結果,並沒有預想中的那麼慢。可能你會說我有索引啊,有索引當然快了。但是鐵子,索引檔案也是儲存在磁碟上的,查詢過程會產生磁碟 i o。如果...

mysql執行原理 mysql 執行原理

闡述mysql系統的各個模組是如何相親相愛的完成乙個我們認為的很簡單的查詢工作的。我們對啟動mysql,客戶端建立連線,請求query,得到返回結果,最終退出。這樣一整個過程來進行分析。第一步 當我們執行啟動mysql系統的命令之後,mysql的初始化模組就從系統配置檔案中讀取系統引數和命令列引數,...

mysql亂碼原理 MySQL中亂碼原理分析

問題描述 假定建立資料庫時採用的是utf8編碼方式 create database huangweiyi default character set utf8 經常在windows的cmd視窗中插入帶有中文的記錄到mysql表中時會出現插入錯誤,或者在查詢mysql中資料顯示是出現亂碼 首先插入中文...