PerconaXtraDBClusterGCache和Record-Set快取
在Percona XtraDB叢集中,有一個GCache和Record-Set快取(也可稱為事務寫集快取)的概念。如果您正在執行長事務,那麼使用這兩個快取通常會造成混淆,因為它們都會導致建立磁碟級檔案。本手冊介紹了它們的主要區別。
一、記錄集快取(Record-Set Cache)
當您在任何特定節點上執行長時間執行的事務時,它將嘗試為其嘗試修改的每一行附加一個金鑰(金鑰是該行的唯一識別符號{db,table,pk.columns})。這些資訊被快取在out-write-set中,然後傳送給組進行認證。
金鑰被快取在HeapStore中(有page-size=64K和total-size=4MB)。如果事務資料大小超過此限制,則儲存將從堆切換到頁(其具有page-size=64MB和total-limit=free-space-on-disk)。
所有這些限制都是不可配置的,但每次事務的記憶體頁大小大於4MB可能會由於記憶體壓力而導致事件停止,因此此限制是合理的。當Galera支援大型事務時,這是另一個限制。
同樣長時間執行的事務也會生成binlog資料,這些資料也會附加到commit(HeapStore-> FileStore)上的out-write-set。 這些資料可能很重要,因為它是由事務插入/更新/刪除的行的二進位制日誌映像。 wsrep_max_ws_size變數控制這部分寫入集的大小。 該閾值不考慮為快取鍵和標題分配的大小。
如果FileStore被使用,它將在磁碟上建立一個檔案(名稱如xxxx_keys和xxxx_data)以儲存快取資料。這些檔案一直儲存到提交事務,因此事務的生命週期被連結。
當節點完成事務並即將提交時,它將使用這兩個檔案(如果資料大小足夠長以便使用FileStore)生成最終寫入集HEADER,並將其釋出為叢集認證。
執行事務的本地節點也將充當訂閱節點,並將通過群集釋出機制接收其自己的寫入集。這一次,本地節點將嘗試將寫入集快取到其GCache中。GCache配置控制GCache保留多少資料。
二、GCache
GCache儲存在群集上釋出的寫入集以進行復制。在GCache中寫入集的生命週期不是事務連結的。
當一個JOINER節點需要一個IST時,它將通過這個GCache進行服務(如果可能的話)。
GCache也將建立檔案到磁碟。
在任何給定的時間點,本地節點都有兩個寫入集副本:一個在GCache中,另一個在記錄集快取中(Record-Set Cache)。
例如,讓我們INSERT/UPDATE在一個表格中說出200萬行,並使用以下模式。
(int , char (100 ), char (100 ) 與 pk (int , char (100 ))
它將在後臺建立寫入鍵/資料檔案,類似於以下內容:
-rw ——- 1 XXX XXX 67108864年04月11 12:26 0x00000707_data.000000
-rw ——- 1 XXX XXX 67108864年04月11 12:26 0x00000707_data.000001
-rw ——- 1 XXX XXX 67108864年04月11 12:26 0x00000707_data.000002
-rw ——- 1 XXX XXX 67108864年04月11 12:26 0x00000707_keys.000000
相關文章
- 快取、快取演算法和快取框架簡介快取演算法框架
- 聊聊本地快取和分散式快取快取分散式
- 清理 Conda 快取和 Pip 快取快取
- 快取穿透、快取雪崩和快取擊穿是什麼?快取穿透
- http快取策略以及強快取和協商快取淺析HTTP快取
- 淺解強快取和協商快取快取
- 瀏覽器快取和webpack快取配置瀏覽器快取Web
- 對於前端快取的理解(快取機制和快取型別)前端快取型別
- 面試官:快取穿透、快取雪崩和快取擊穿是什麼?面試快取穿透
- 快取和web快取分別是什麼?快取Web
- Redis 快取雪崩,快取擊穿和快取穿透技術方案總結Redis快取穿透
- 快取和併發快取
- 快取: Memcached和terracotta快取
- Mybatis的快取——一級快取和原始碼分析MyBatis快取原始碼
- 淺談快取寫法(一):快取的雪崩和穿透快取穿透
- 強制快取(200)和協商快取(304)快取
- 程式碼解決快取穿透和快取雪崩問題快取穿透
- 快取穿透、快取擊穿、快取雪崩、快取預熱快取穿透
- Redis快取穿透和雪崩Redis快取穿透
- 老徐和阿珍的故事:快取穿透、快取擊穿、快取雪崩、快取熱點,傻傻分不清楚快取穿透
- 快取穿透、快取擊穿、快取雪崩快取穿透
- 快取穿透、快取雪崩、快取擊穿快取穿透
- Web快取知多少(快取機制和資料儲存)Web快取
- Hibernate的一級快取Session和二級快取SessionFactory快取Session
- MyBatis中的一級快取和二級快取介紹MyBatis快取
- Web快取基礎:術語、HTTP報頭和快取策略Web快取HTTP
- 區分http請求狀態碼來理解快取(協商快取和強制快取)HTTP快取
- Laravel 實現二級快取 提高快取的命中率和細粒化快取 keyLaravel快取
- Redis快取擊穿、快取穿透、快取雪崩Redis快取穿透
- HTTP快取——協商快取(快取驗證)HTTP快取
- [Redis]快取穿透/快取擊穿/快取雪崩Redis快取穿透
- 快取穿透 快取雪崩快取穿透
- 快取問題(一) 快取穿透、快取雪崩、快取併發 核心概念快取穿透
- mybatis原始碼學習:一級快取和二級快取分析MyBatis原始碼快取
- hibernate的查詢快取和二級快取的配合使用快取
- Hibernate中一級快取和二級快取使用詳解快取
- DDD 和 記憶體快取記憶體快取
- 快取 LRU 和 LFU 實現快取