當業務資料持續增長時,將所有資料(包括訪問頻率較低的溫、冷資料)儲存在標準的InnoDB表中,會導致儲存成本不斷攀升。若將這些資料歸檔至外部儲存,又會喪失線上讀寫和分析的能力。PolarDB MySQL版提供了基於X-Engine的資料階層式存放區能力。您可以將整張表或表中的特定分區轉換為使用高壓縮率的X-Engine引擎,從而在同一張表中實現InnoDB(熱資料)與X-Engine(溫/冷資料)的混合儲存。這能夠在不犧牲資料線上訪問能力的前提下,降低您的儲存成本,資料在X-Engine中依然支援DML寫入和Online DDL表結構變更。
工作原理
PolarDB MySQL版的混合資料分割函數允許一張分區表內的不同分區使用不同的儲存引擎。其工作原理如下:
資料分層:您可以將頻繁訪問的“熱”資料分區保留為InnoDB引擎,以獲得最佳的讀寫效能。同時,將訪問頻率較低的“溫”或“冷”資料分區遷移至X-Engine引擎。
智能路由:當您對該表發起查詢時,PolarDB會根據查詢條件,自動將請求路由到對應資料所在的正確分區及其儲存引擎,整個過程對應用程式層透明。
高壓縮率:X-Engine引擎通過其先進的壓縮演算法和可選的列存格式,能夠實現極高的資料壓縮比,從而大幅減少實體儲存體空間佔用,降低成本。
適用範圍
使用本功能前,請確保您的PolarDB MySQL版叢集版本滿足以下要求。
歸檔普通表:
MySQL 8.0.1且修訂版本為8.0.1.1.31或以上。
MySQL 8.0.2且修訂版本為8.0.2.2.12及以上。
歸檔分區表:MySQL 8.0.2且修訂版本為8.0.2.2.12及以上。
歸檔為X-Engine列存表:MySQL 8.0.2且修訂版本為8.0.2.2.33及以上。
準備工作
在開始歸檔資料前,您需要完成以下準備。
開啟高壓縮引擎(X-Engine):使其可以作為表或分區的儲存引擎選項。
開啟混合分區:對於核心小版本小於8.0.2.2.33的叢集,請前往配額中心,根據配額ID
polardb_mysql_hybrid_partition找到配額名稱,在對應的操作列單擊申請來開通該功能。
歸檔普通表
將一整張非分區表的資料和儲存引擎從InnoDB轉換為X-Engine。
文法
ALTER TABLE table_name ENGINE=engine_name[ TABLE_FORMAT=COLUMN];參數說明
參數 | 參數說明 |
table_name | 需要歸檔為X-Engine的表名。 |
engine_name | 儲存資料的引擎名稱。
|
TABLE_FORMAT | X-Engine資料存放區格式,可選項。
|
樣本
歸檔普通表
t1為XEngine行存表:ALTER TABLE t1 ENGINE=XEngine;歸檔普通表
t1為XEngine列存表:ALTER TABLE t1 ENGINE=XEngine TABLE_FORMAT=COLUMN;將普通表
t1資料導回為InnoDB引擎:ALTER TABLE t1 ENGINE=InnoDB;
歸檔分區表
歸檔指定分區
將分區表中的特定分區(通常是儲存冷資料的舊分區)歸檔至X-Engine,實現冷熱資料階層式存放區,歸檔後的表為混合分區表。
文法
ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = XEngine[ TABLE_FORMAT=COLUMN];參數說明
參數 | 參數說明 |
table_name | 需要歸檔為X-Engine的表名。 |
part_name | 需要歸檔為X-Engine的分區名。 |
TABLE_FORMAT | X-Engine資料存放區格式,可選項。
|
樣本
歸檔分區表
t1的p1分區為X-Engine引擎行存格式:ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine;歸檔分區表
t1的p1分區為X-Engine引擎列存表:ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine TABLE_FORMAT=COLUMN;
導回為InnoDB引擎
文法
ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);參數說明
參數 | 參數說明 |
table_name | 混合分區表名。 |
part_name | 需要導回為InnoDB引擎的分區名。 |
partition_definition | 與需要導回的分區的 說明 分區定義中的ENGINE為可選項。未標記引擎名稱時,預設為與表相同的引擎InnoDB。若標記為 |
樣本
將歸檔在X-Engine上的分區表t1中p1分區上的資料導回為InnoDB引擎。
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO(PARTITION p1 VALUES LESS THAN(100));應用於生產環境
最佳實務:建議僅對訪問頻率較低的溫、冷資料歸檔為X-Engine,以在成本和查詢效能之間取得最佳平衡。對於寫入密集型但壓縮潛力大的資料(如日誌、埋點資料),優先考慮使用X-Engine的列存格式(
TABLE_FORMAT=COLUMN)。風險防範:資料移轉(
ALTER TABLE)是一項資源密集型操作。儘管它線上進行,但仍建議在業務低峰期執行,以避免對生產負載造成效能抖動。監控與警示:在歸檔過程中,您可以通過
SHOW FULL PROCESSLIST;命令查看DDL操作的進度。同時,密切關注控制台上叢集的CPU使用率、IOPS和磁碟空間等關鍵計量。