文档首页 > > 开发指南> 教程:调优表设计> 步骤3:选择存储方式和压缩级别

步骤3:选择存储方式和压缩级别

分享
更新时间: 2019/06/24 GMT+08:00

选择存储方式

DWS支持行列混合存储。用户可以根据具体应用场景,建表的时候选择行存储还是列存储表。

一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。

存储模型

适用场景

行存

点查询(返回记录少,基于索引的简单查询)。

增删改比较多的场景。

列存

统计分析类查询 (group , join 多的场景)。

即席查询(查询条件列不确定,行存无法确定索引)。

此教程中所使用的样例表为典型的TPC-DS表,是典型的多字段表,统计分析类查询场景多,因此选择列存存储方式。

WITH (ORIENTATION = column)

选择压缩级别

对于I/O读写量大,CPU富足(计算相对小)的场景,选择高压缩比;反之选择低压缩比。建议依据此原则进行不同压缩下的测试和对比,以选择符合自身业务情况的最优压缩比。压缩比通过COMPRESSION参数指定,其支持的取值如下:

  • 列存表为:YES/NO/LOW/MIDDLE/HIGH,默认值为LOW。
  • 行存表为:YES/NO,默认值为NO。

各压缩级别所适用的业务场景说明如下:

压缩级别

所适用的业务场景

低级别压缩

系统CPU使用率高,存储磁盘空间充足。

中度压缩

系统CPU使用率适中,但存储磁盘空间不是特别充足。

高级别压缩

系统CPU使用率低,磁盘空间不充裕。

步骤1:创建初始表并加装样例数据中没有指定压缩比,DWS默认为用户选择LOW级别压缩比。在这一步中我们把压缩比调整为MIDDLE级别,进行验证对比。

增加存储方式和压缩比后的建表样例如下:

CREATE TABLE store_sales
(
    ss_sold_date_sk           integer                       ,
    ss_sold_time_sk           integer                       ,
    ss_item_sk                integer               not null,
    ss_customer_sk            integer                       ,
    ss_cdemo_sk               integer                       ,
    ss_hdemo_sk               integer                       ,
    ss_addr_sk                integer                       ,
    ss_store_sk               integer                       ,
    ss_promo_sk               integer                       ,
    ss_ticket_number          bigint               not null,
    ss_quantity               integer                       ,
    ss_wholesale_cost         decimal(7,2)                  ,
    ss_list_price             decimal(7,2)                  ,
    ss_sales_price            decimal(7,2)                  ,
    ss_ext_discount_amt       decimal(7,2)                  ,
    ss_ext_sales_price        decimal(7,2)                  ,
    ss_ext_wholesale_cost     decimal(7,2)                  ,
    ss_ext_list_price         decimal(7,2)                  ,
    ss_ext_tax                decimal(7,2)                  ,
    ss_coupon_amt             decimal(7,2)                  ,
    ss_net_paid               decimal(7,2)                  ,
    ss_net_paid_inc_tax       decimal(7,2)                  ,
    ss_net_profit             decimal(7,2)                  
) 
WITH (ORIENTATION = column,COMPRESSION=middle);
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区