本文介绍如何快速开启和试用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 | 否 |