GBase 8c
其他
文章

GBase 8c中行存表和列存表的选择

GBase社区管理员
发表于2024-02-04 17:14:1053次浏览0个评论
  1. 行存表

默认创建表的类型。数据按行进行存储,即一行数据是连续存储。适用于对数据需要经常更新的场景。

postgres=# CREATE TABLE customer_t1
(
state_ID CHAR(2), state_NAME VARCHAR2(40),
area_ID NUMBER
);
--删除表
postgres=# DROP TABLE customer_t1;
  1. 列存表

数据按列进行存储,即一列所有数据是连续存储的。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询。

postgres=# CREATE TABLE customer_t2
(
state_ID CHAR(2), state_NAME VARCHAR2(40),
area_ID NUMBER
)
WITH (ORIENTATION = COLUMN);
--删除表
postgres=# DROP TABLE customer_t2;
  1. 行存表和列存表的选择
  • 更新频繁程度。数据如果频繁更新,选择行存表。

  • 插入频繁程度。频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。

  • 表的列数。表的列数很多,选择列存表。

  • 查询的列数。如果每次查询时,只涉及了表的少数(<50%总列数)几个列,选择列存表。

  • 压缩率。列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。

评论已关闭