文档首页> 数据仓库服务 GaussDB(DWS)> 常见问题> 数据库使用> 如何查看表是行存还是列存?
更新时间:2023-01-09 GMT+08:00

如何查看表是行存还是列存?

表的存储方式由建表语句中的ORIENTATION参数控制,row表示行存,column表示列存。

8.1.2及之前版本,不指定ORIENTATION参数,默认为row行存。

8.1.3版本后,支持通过GUC参数default_orientation控制,即创建表时,如果不指定ORIENTATION参数时,则根据该GUC参数的值来创建对应类型的表。其中,row表示行存表,column表示列存表,column enabledelta表示创建开启delta表的列存表。该GUC可通过DWS控制台进行设置,如下图。

查看已创建的表是行存还是列存,可通过表定义函数PG_GET_TABLEDEF查询。

如下orientation=column表示为列存表。

目前暂不支持通过ALTER TABLE语句修改ORIENTATION参数,即行存表和列存表无法直接进行转换。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
SELECT * FROM PG_GET_TABLEDEF('customer_t1');
                                  pg_get_tabledef                                  
-----------------------------------------------------------------------------------
 SET search_path = tpchobs;                                                       +
 CREATE  TABLE customer_t1 (                                                      +
         c_customer_sk integer,                                                   +
         c_customer_id character(5),                                              +
         c_first_name character(6),                                               +
         c_last_name character(8)                                                 +
 )                                                                                +
 WITH (orientation=column, compression=middle, colversion=2.0, enable_delta=false)+
 DISTRIBUTE BY HASH(c_last_name)                                                  +
 TO GROUP group_version1;
(1 row)

数据库使用 所有常见问题

more