暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a Mpp Cluster集群产品性能优化篇之行列混存优化

原创 Bright 2022-03-15
547

由于GBase 8a MPP Cluster是列存储的集群架构,因此当列数较多,访问的数据记录又非常离散时,会造成大量的离散I/O,严重影响查询性能。 GBase 8a MPP Cluster提供行列混存功能,即通过存储冗余行的信息,提高I/O性能。

 

建表语句:

CREATE TABLE "ac43" (

"BAZ002" bigint(16) DEFAULT NULL,

"AAZ223" bigint(16) NOT NULL,

"AAZ061" bigint(16) DEFAULT NULL,

"BAE165" varchar(3) DEFAULT NULL,

"BAB221" varchar(20) NOT NULL,

"AAC001" bigint(16) NOT NULL,

"AAB001" bigint(16) DEFAULT NULL,

"AAE140" varchar(3) NOT NULL,

"AAE002" int(6) NOT NULL,

"AAE003" int(6) NOT NULL,

"AAA115" varchar(3) NOT NULL,

"BAE230" varchar(3) NOT NULL,

"BAE151" varchar(3) NOT NULL,

"AAC066" varchar(3) NOT NULL,

"AAC084" varchar(3) NOT NULL,

"BAE180" decimal(16,2) DEFAULT NULL,

"AAE180" decimal(16,2) DEFAULT NULL,

"AAE020" decimal(16,2) DEFAULT NULL,

"AAE021" decimal(16,2) DEFAULT NULL,

"AAE022" decimal(16,2) DEFAULT NULL,

"AAE023" decimal(16,2) DEFAULT NULL,

"AAA042" decimal(10,4) DEFAULT NULL,

"AAA043" decimal(10,4) DEFAULT NULL,

"AAA041" decimal(10,4) DEFAULT NULL,

"AAA045" decimal(10,4) DEFAULT NULL,

"BAE089" int(3) DEFAULT NULL,

"BAC184" varchar(20) DEFAULT NULL,

"BAB222" varchar(20) DEFAULT NULL,

"BAE181" varchar(3) DEFAULT NULL,

"BAE046" varchar(20) DEFAULT NULL,

"AAE011" varchar(50) DEFAULT NULL,

"AAE036" bigint(14) DEFAULT NULL,

"AAB034" varchar(16) DEFAULT NULL,

"AAA027" varchar(6) DEFAULT NULL,

GROUPED"AC43" ("BAZ002","AAZ223","AAZ061","BAE165","BAB221","AAC001","AAB001","AAE140","AAE002","AAE003","AAA115","BAE230","BAE151","AAC066","AAC084","BAE180","AAE180","AAE020","AAE021","AAE022","AAE023","AAA042","AAA043","AAA041","AAA045","BAE089","BAC184","BAB222","BAE181","BAE046","AAE011","AAE036","AAB034","AAA027"),

  KEY "IDX_AC43_AAC001" ("AAC001") KEY_BLOCK_SIZE=4096 USING HASH GLOBAL

) COMPRESS(5, 5)  ENGINE=EXPRESS DISTRIBUTED BY('aac001') DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'

 

查询语句

以下为性能得到提高的sql查询语句

select

 ac43x0_.AAZ223 as AAZ1_2446

,ac43x0_.BAZ002 as BAZ2_2446

,ac43x0_.AAZ061 as AAZ3_2446

,ac43x0_.BAE165 as BAE4_2446

,ac43x0_.BAB221 as BAB5_2446

,ac43x0_.AAC001 as AAC6_2446

,ac43x0_.AAB001 as AAB7_2446

,ac43x0_.AAE140 as AAE8_2446

,ac43x0_.AAE002 as AAE9_2446

,ac43x0_.AAE003 as AAE10_2446

,ac43x0_.AAA115 as AAA11_2446

,ac43x0_.BAE230 as BAE12_2446

,ac43x0_.BAE151 as BAE13_2446

,ac43x0_.AAC066 as AAC14_2446

,ac43x0_.AAC084 as AAC15_2446

,ac43x0_.BAE180 as BAE16_2446

,ac43x0_.AAE180 as AAE17_2446

,ac43x0_.AAE020 as AAE18_2446

,ac43x0_.AAE021 as AAE19_2446

,ac43x0_.AAE022 as AAE20_2446

,ac43x0_.AAE023 as AAE21_2446

,ac43x0_.AAA042 as AAA22_2446

,ac43x0_.AAA043 as AAA23_2446

,ac43x0_.AAA041 as AAA24_2446

,ac43x0_.AAA045 as AAA25_2446

,ac43x0_.BAE089 as BAE26_2446

,ac43x0_.BAC184 as BAC27_2446

,ac43x0_.BAB222 as BAB28_2446

,ac43x0_.BAE181 as BAE29_2446

,ac43x0_.BAE046 as BAE30_2446

,ac43x0_.AAE011 as AAE31_2446

,ac43x0_.AAE036 as AAE32_2446

,ac43x0_.AAB034 as AAB33_2446

,ac43x0_.AAA027 as AAA34_2446

from

AC43 ac43x0_ where 1=1 and instr('120'

ac43x0_.AAE140)>0 and (ac43x0_.AAC001 in (4000000001960854))

 

项目中很多需要这种全字段SELECT的情况,尤其多字段宽表,明细表,在这种情况可以考虑使用行列混存进行优化。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论