GaussDB(DWS)之数据库对象设计

网友投稿 935 2022-05-29

GaussDB(DWS)之数据库对象设计

1、根据应用逻辑设计数据库

根据业务逻辑,抽象出表定义,表其实就是描述了实体的各个属性;根据业务逻辑,判断表在数据库中的存储方式;优化表定义和查询语句;

2、行存储和列存储的特点

GaussDB(DWS)之数据库对象设计

能够根据数据特征自适应的选择压缩算法,平均压缩比7:1;根据预置的时间策略对数据自动压缩;

压缩数据可通过数据库接口继续访问,压缩过程对应用透明;压缩数据可直接访问,对业务透明,无需导入导出,极大缩短历史数据访问的准备时间;

- 优点:数据库性能瓶颈经常集中在磁盘I/O,数据压缩后,读取数据时,相对于压缩解压,减少I/O能够更好地提高性能;

3、选择行存还是列存

- 列存适合的场景:统计分析类查询(group,join多的场景);即兴查询(查询条件列不确定,行存无法确定索引);

- 行存适合的场景:点查询(返回记录少,基于索引的简单查询);增删改比较多的场景;

4、数据分布方式

复制Replication方式;散列Hash方式

- 复制(Replication)方式 - 将表中的所有数据复制到集群中每一个DN实例上,主要适用于记录集较小的表(10W行记录以下);

- 散列(Hash)方式 - 将表中指定字段进行hash运算后,生成对应的hash值,根据DN实例与哈希值的映射关系获得该元组的目标存储位置,适用于数据量较大的表;

5、数据分布策略

分布存储和并发查询是MPP架构数据库的主要优势所在,将一个大数据量表中的数据,按合适分布策略分散存储在多个DN实例内,可极大提升数据库性能;

6、分布列的选择

- 尽量选择distinct值比较多的列,保证数据均匀分布,分布均匀是为了避免木桶效应,让各个主机对等执行;

- 尽量选择Join列或group 列做分布列,尽量选择Join列或group列是为了避免DN之间数据流动, 提高性能;

- 尽量不要选择filter列作为分布列;

- 不同DataNode的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列;

7、分布表和复制表的关联查询

T1为hash表,T2为复制表:T1表的每一部分在各DN上分别与T2表进行连接 -> 各DN上的连接结果集在Coordinator上进行汇聚,产生最终输出的结果集;

8、分布表与分布表关联查询

T1表和T3表都为分布表:在DN1实例上,T1表的part1部分与T3表的T1部分进行关联 -> T3表的part2、part3、part4复制到DN1上,与T1的part1部分进行关联 -> DN2、DN3、DN4实例操作与DN1类似 -> Coordinator节点对各DN生成的结果集进行汇聚,生成最终数据结果集;

9、分区剪枝

分区表是将大表的数据分成称为分区的许多小的子集;

- 好处:基于时间的查询分区枝剪可以大大提高查询性能;数据容易管理;

- 建议:业务表一般按照时间或地区做Range分区

10、索引介绍

索引是对数据库表中一列或多列的值进行排序的一种结构;使用索引可快速访问数据库表中的特定信息;

分类:行存表索引/列存表索引

- 行存表索引 - B-Tree索引:适合数据重复度低的数据字段, 例如 身份证号码 等字段;

*B-Tree索引 - 优点:有B-tree索引,就像翻书目录一样,可以通过索引直接定位到要查询的数据(减少了I/O操作);另外查询性能与表中数据量无关;

*注意:不适合键值重复率较高的字段上创建B-Tree索引;

- 列存表索引 - PCK索引(Partial Cluster Key 局部聚集):一种针对列存的约束条件;一般在建表时创建,在数据导入时,根据约束,在列存存储单元(CU)内对数据做聚集;

*Psort索引:一种列存局部索引,对列存存储单元(CU)内的数据,创建局部索引(MIN/MAX index稀疏索引),提高查询效率;

*PCK索引 - 注意:先创建后使用,之前入库的数据不会自动根据索引聚集;

11、如何选择索引

行存选择索引注意事项:

- 查询条件列上创建B-tree index, 也可以创建组合索引, distinct值比较少的列不适合建立index;

- 行存不适合建立太多B-tree index, 然后做数据导入,这样的导入性能非常差; 一般这种情况需要禁用该表的索引,待数据导入后重建index;

列存选择索引注意事项

- 查询条件出现最多的列,例如filter条件或者join列上建立partial cluster key(约束);

- 条件列上可以建立psort index, 也可以创建组合索引;

EI企业智能 数据仓库服务 GaussDB(DWS) Gauss AP 数据库 HUAWEI CONNECT

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker镜像
下一篇:【云小课】【第13课】初识GaussDB(for Cassandra)基础架构
相关文章