---
title: "行列混存 - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: 行列混存 通常，我们在数据库中选择行存来满足 OLTP 业务中高频次短查询需求，选择列存满足 OLAP 业务中大量数据扫描分析。当业务即有高频次短查询，又有大量涉及大量数据的复杂分析查询时，通常选择两套数据库系统，通过 ETL、CDC、流计算等方式在两套系统间进行数据同步。并在两套系统上分别选择行存，列存以分别满足 …
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.1

# 行列混存

更新时间：2026-04-10 11:58:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/620.obap/600.obap-query/700.obap-row-column-hybrid-storage.md)  

通常，我们在数据库中选择行存来满足 OLTP 业务中高频次短查询需求，选择列存满足 OLAP 业务中大量数据扫描分析。当业务即有高频次短查询，又有大量涉及大量数据的复杂分析查询时，通常选择两套数据库系统，通过 ETL、CDC、流计算等方式在两套系统间进行数据同步。并在两套系统上分别选择行存，列存以分别满足 TP 和 AP 的查询需求。业务不仅要维护多套系统的复杂度，忍受两者间的数据延迟，还要手动为每个查询选择用哪套系统支持。

OceanBase 数据库支持行列冗余表，在一套系统中同时满足 TP，AP 查询需求，没有数据延迟，也能通过优化器自动选择行存或列存。行列冗余表语法如：

```sql
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 VARCHAR(100)) WITH COLUMN GROUP (ALL COLUMNS, EACH COLUMN)

```

这样我们建了一个 t1 表，即有行存也有列存。

典型的 TP SQL，如：

```sql
UPDATE t1 SET c2 = 3, c4 = 'abc' WHERE c1 = 20445883;

```

SQL 优化器会选择读行存。

典型的 AP SQL，如：

```sql
SELECT SUM(c3) FROM t1 GROUP BY c2;

```

SQL 优化器会选择使用列存。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
