由于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的情况,尤其多字段宽表,明细表,在这种情况可以考虑使用行列混存进行优化。




