本文介紹如何快速開啟和試用PolarDB MySQL版的列存表分析功能。
適用範圍
您的叢集版本需為MySQL 8.0.2,且核心小版本需為8.0.2.2.34及以上版本。
開通列存表分析功能
存量叢集開啟列存分析
PolarDB MySQL版的列存表分析功能僅支援MySQL 8.0.2,核心小版本需在8.0.2.2.34及以上。如果版本條件不滿足,請先升級核心小版本,再開啟列存表分析功能。
登入PolarDB控制台,在左側導覽列單擊集群列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。
在基本信息頁面,單擊列存表分析加速右側的开启按鈕。等待叢集重啟後,列存表分析功能將會開啟。
新購叢集開啟列存分析
登入PolarDB控制台,在左側導覽列單擊集群列表,選擇叢集所在地區,單擊创建新集群。
在購買頁面,主要配置以下幾項:
创建方式:创建主集群
引擎版本:MySQL 8.0.2
列存表分析加速:開啟
根據您的實際業務,填寫其他選項併購買即可。更多說明,請參見自訂購買
快速體驗
開啟列存表加速後,建表語句指定儲存引擎和儲存格式,預設就會建立列存表。以下樣本展示如何建立列存表、大量匯入資料並執行分析查詢。
步驟一:建立列存表
執行以下SQL語句建立一張列存表。
CREATE TABLE sales_records (
sale_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
region VARCHAR(50),
sale_date DATE,
amount DECIMAL(10, 2)
);步驟二:建立預存程序大量匯入資料
建立預存程序,匯入100萬行記錄,每5000條提交一次。
DELIMITER //
CREATE PROCEDURE InsertMillionRows()
BEGIN
DECLARE i INT DEFAULT 1;
SET autocommit = 0;
WHILE i <= 1000000 DO
INSERT INTO users (username, email, age)
VALUES (
CONCAT('user_', LPAD(i, 7, '0')),
CONCAT('user_', LPAD(i, 7, '0'), '@test.com'),
FLOOR(18 + RAND() * 50)
);
SET i = i + 1;
IF i % 5000 = 0 THEN
COMMIT;
END IF;
END WHILE;
COMMIT;
SET autocommit = 1;
END //
DELIMITER ;步驟三:調用預存程序
執行以下語句調用預存程序,大量匯入資料。
CALL InsertMillionRows();步驟四:執行聚集查詢
執行以下聚集查詢,驗證資料已成功匯入。
SELECT COUNT(*) FROM users;預期返回結果如下:
+----------+
| COUNT(*) |
+----------+
| 1000000 |
+----------+
1 row in set (0.01 sec)步驟五:查看列式執行計畫
使用EXPLAIN命令查看列式執行計畫,確認查詢走了列式引擎。
EXPLAIN SELECT COUNT(*) FROM users;預期返回結果如下,Extra Info列中出現IMCI Execution Plan字樣,表示查詢使用了列式執行引擎。
+----+--------------------+-------+--------+--------+---------------------------------------------------------------+
| ID | Operator | Name | E-Rows | E-Cost | Extra Info |
+----+--------------------+-------+--------+--------+---------------------------------------------------------------+
| 1 | Select Statement | | | | IMCI Execution Plan (max_dop = 12, max_query_mem = 858993459) |
| 2 | └─Aggregation | | | | |
| 3 | └─Table Scan | users | | | |
+----+--------------------+-------+--------+--------+---------------------------------------------------------------+配置行列執行分流
列存表核心情境是海量資料分析,結合列式儲存、向量化執行和並行計算技術,實現低成本、高效能的SQL計算。列存表的唯讀節點預設採用這種計算模型,它的限制是不能充分利用主鍵索引進行高並發點查。
如果業務同時需要高並發點查和複雜SQL分析,可通過建立不同的叢集串連地址(Endpoint)來隔離資源,兩類工作負載互不影響:
複雜SQL分析:僅需增加普通的唯讀節點即可,並將參數
loose_use_imci_engine設定為ON(預設值為ON),查詢自動走列式執行。高並發點查:將對應唯讀節點的
loose_use_imci_engine參數設定為OFF,查詢將走行式執行以利用主鍵索引。
列存表叢集參數配置
開啟列存表分析加速選項後,會預設開啟X-Engine引擎,表格式預設是列存格式。以下為相關參數的預設配置:
參數名 | 說明 | 取值範圍 | 預設值 | 需重啟 |
| [0-1] | 1 | 是 | |
| 叢集預設儲存引擎。 | [InnoDB|xengine] | xengine | 是 |
| X-Engine引擎的預設表格式。 | [default|row|column] | column | 否 |
| 是否開啟列存表與列存索引(IMCI)執行引擎的聯動。 | [ON|OFF] | ON | 是 |
| 是否開啟列存索引(IMCI)的OSS資料LRU緩衝。 | [ON|OFF] | ON | 否 |
| X-Engine引擎使用的記憶體百分比。 | [5-95] | 90 | 否 |
| X-Engine記憶體中分配給列存表分析功能的百分比。 | [0-100] | 80 | 否 |