基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
行列混存
更新时间:2026-04-10 11:58:01
通常,我们在数据库中选择行存来满足 OLTP 业务中高频次短查询需求,选择列存满足 OLAP 业务中大量数据扫描分析。当业务即有高频次短查询,又有大量涉及大量数据的复杂分析查询时,通常选择两套数据库系统,通过 ETL、CDC、流计算等方式在两套系统间进行数据同步。并在两套系统上分别选择行存,列存以分别满足 TP 和 AP 的查询需求。业务不仅要维护多套系统的复杂度,忍受两者间的数据延迟,还要手动为每个查询选择用哪套系统支持。
OceanBase 数据库支持行列冗余表,在一套系统中同时满足 TP,AP 查询需求,没有数据延迟,也能通过优化器自动选择行存或列存。行列冗余表语法如:
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 VARCHAR(100)) WITH COLUMN GROUP (ALL COLUMNS, EACH COLUMN)
这样我们建了一个 t1 表,即有行存也有列存。
典型的 TP SQL,如:
UPDATE t1 SET c2 = 3, c4 = 'abc' WHERE c1 = 20445883;
SQL 优化器会选择读行存。
典型的 AP SQL,如:
SELECT SUM(c3) FROM t1 GROUP BY c2;
SQL 优化器会选择使用列存。