全部产品
Search
文档中心

云原生数据库 PolarDB:列存表常见问题

更新时间:Mar 13, 2026

本文涵盖列存表版本要求、与列存索引(IMCI)的区别、行列混用、MPP多机分析等常见问题。

PolarDB哪个版本支持列存表?

PolarDB MySQL版数据库引擎需为MySQL 8.0.2,且内核小版本需为8.0.2.2.33及以上版本。

列存表与X-Engine高压缩引擎是什么关系?

X-Engine是PolarDB MySQL版自研的存储引擎,得益于MySQL的插件式存储架构,100%兼容MySQL。X-Engine引擎支持两种存储格式:

  • 行存格式(默认):主要用于低成本历史归档存储。

  • 列存格式(从8.0.2.2.33版本起支持):用于低成本高性能数据分析,即列存表。

CREATE TABLE语句中指定ENGINE=XEngineTABLE_FORMAT=COLUMN即可创建列存表,不指定TABLE_FORMAT时默认为行存格式。更多用法参见使用指南

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)
) ENGINE=XEngine TABLE_FORMAT=COLUMN;

列存表与列存索引(IMCI)是什么关系?

两者的存储方式和适用场景不同:

  • 列存表:基于X-Engine引擎,数据主表采用列式压缩存储格式,只有一份列存数据。适用于低成本归档和数仓分析场景。

  • 列存索引(IMCI):基于InnoDB引擎,数据主表为行存格式,列存索引是行存表的列存副本。适用于HTAP混合负载场景,高并发点查走行存格式,复杂SQL分析走列存副本。

两者共用同一套列式执行器,均可用于高性能数据分析。

对比项

X-Engine引擎(列存表)

InnoDB引擎(IMCI列存索引)

列存表

支持

不支持

列存索引

不支持

支持

适用场景

数据归档、数仓分析

HTAP混合负载,同时处理在线事务和数据分析

列存表和列存索引能否一起使用?

可以。同一PolarDB集群支持同时创建InnoDB表和X-Engine表,因此可以同时使用列存表和列存索引(IMCI)。两者定位的场景不同:列存表适合数据量较大的低成本归档和数据分析;列存索引适合同时需要高并发点查和复杂SQL分析的HTAP混合负载场景。

X-Engine行存表和列存表是否可以共存,主要差异是什么?

可以。行存表和列存表属于X-Engine引擎的不同存储格式,可以在同一集群中共存。两者的特点和适用场景对比如下。

对比项

X-Engine列存表

X-Engine行存表

存储架构

LSM-tree

LSM-tree

存储格式

列式存储+压缩

行存存储+压缩

压缩率

5~30倍

2~5倍

实时更新能力

高并发点查

复杂SQL分析

适用场景

低成本数仓分析、内外表联邦分析

低成本归档、高性价比TP场景(读性能对比InnoDB降低约30%)

使用列存表做数据分析时,是否需要添加列存只读节点?

不需要。使用列存索引(IMCI)时,需要额外添加列存索引只读节点用于分析。列存表的所有只读节点默认采用列式执行,无需添加专用的列存索引只读节点。扩展读能力只需增加普通只读(RO)节点即可。

读写(RW)节点主要用于数据写入,默认不支持列式执行。建议在集群连接地址配置中,将主库是否接受读设置为,避免读请求被路由到读写(RW)节点。image

主键点查访问列存表为什么性能较低?

列存表的只读节点默认采用列式执行,无法利用主键索引进行点查,只能通过粗糙索引加速查询。如果需要对列存表执行主键点查,可通过SQL Hint关闭列式执行:

SELECT /*+ SET_VAR(USE_IMCI_ENGINE=OFF) */ * FROM t1 WHERE id = 1;

如果业务同时需要高并发点查和复杂SQL分析,建议通过创建不同的集群连接地址隔离两类工作负载。详细配置,请参见配置行列执行分流

列存表是否支持MPP多机分析?

支持。集群中有多个只读节点时,查询会根据代价估算自动判断是否使用多机并行执行,该过程对您是透明的。执行计划中包含Exchange算子时,表示使用了多机执行。

EXPLAIN SELECT COUNT(*) FROM lineitem;

+----+--------------------------+----------+-----------+----------+---------------------------------------------------------------+
| ID | Operator                 | Name     | E-Rows    | E-Cost   | Extra Info                                                    |
+----+--------------------------+----------+-----------+----------+---------------------------------------------------------------+
|  1 | Select Statement         |          |           |          | IMCI Execution Plan (max_dop = 8, max_query_mem = 3435973836) |
|  2 | └─Aggregation            |          | 1         | 14042.14 |                                                               |
|  3 |   └─Consume              |          | 1         | 0.00     | Consume ProducerPipeId: 1, Producers: 218552821,505619133     |
|  4 |     └─Exchange           |          | 1         | 14042.14 | PipeId: 1, Consumers: 505619133, Part Type: Gather            |
|  5 |       └─Aggregation      |          | 1         | 14032.14 |                                                               |
|  6 |         └─Table Scan     | lineitem | 300018951 | 12000.76 |                                                               |
+----+--------------------------+----------+-----------+----------+---------------------------------------------------------------+