快速体验列存表

更新时间:
复制为 MD 格式

本文介绍如何快速开启和试用PolarDB MySQL的列存表分析功能

适用范围

您的集群版本需为MySQL 8.0.2,且内核小版本需为8.0.2.2.34及以上版本。

开通列存表分析功能

存量集群开启列存分析

说明

PolarDB MySQL的列存表分析功能仅支持MySQL 8.0.2,内核小版本需在8.0.2.2.34及以上。如果版本条件不满足,请先升级内核小版本,再开启列存表分析功能。

  1. 登录PolarDB控制台,在左侧导航栏单击集群列表,选择集群所在地域,并单击目标集群ID进入集群详情页。

  2. 基本信息页面,单击列存表分析加速右侧的开启按钮。等待集群重启后,列存表分析功能将会开启。

新购集群开启列存分析

  1. 登录PolarDB控制台,在左侧导航栏单击集群列表,选择集群所在地域,单击创建新集群

  2. 在购买页面,主要配置以下几项:

    1. 创建方式创建主集群

    2. 引擎版本:MySQL 8.0.2

    3. 列存表分析加速:开启

  3. 根据您的实际业务,填写其他选项并购买即可。更多说明,请参见自定义购买

快速体验

开启列存表加速后,建表语句指定存储引擎和存储格式,默认就会创建列存表。以下示例展示如何创建列存表、批量导入数据并执行分析查询。

步骤一:创建列存表

执行以下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引擎,表格式默认是列存格式。以下为相关参数的默认配置:

参数名

说明

取值范围

默认值

需重启

loose_xengine

是否开启高压缩引擎(X-Engine)

[0-1]

1

default_storage_engine

集群默认存储引擎。

[InnoDB|xengine]

xengine

loose_xengine_default_storage_table_format

X-Engine引擎的默认表格式。

[default|row|column]

column

loose_polar_enable_imci_with_ctable

是否开启列存表与列存索引(IMCI)执行引擎的联动。

[ON|OFF]

ON

loose_imci_oss_enable_lru

是否开启列存索引(IMCI)OSS数据LRU缓存。

[ON|OFF]

ON

loose_xengine_use_memory_pct

X-Engine引擎使用的内存百分比。

[5-95]

90

loose_xengine_ctable_use_memory_pct

X-Engine内存中分配给列存表分析功能的百分比。

[0-100]

80