课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库开发是许多后端程序员在工作中都需要学习和掌握的一个编程开发技术,而今天我们就通过案例分析来了解一下,数据库开发建表基础知识分享。
建表的原则:
(1)、表数据均匀分布在各个DN上,以防止单个DN对应的存储设备空间不足造成集群有效容量下降。选择合适分布列,避免数据分布倾斜可以实现该点
(2)、表Scan压力均匀分散在各个DN上,以避免单DN的Scan压力过大,形成Scan的单节点瓶颈。分布列不选择基表上等值filter中的列可以实现该点
(3)、减少扫描数据数据量。通过分区的剪枝机制可以实现该点
(4)、尽量极少随机IO。通过聚簇/局部聚簇可以实现该点
(5)、尽量避免数据shuffle,减小网络压力。通过选择join-condition或者groupby列为分布列可以大程度的实现这点
怎么选择存储类型:
a)行存表:点查询,返回记录少,基于索引的简单查询;增删改较多的表
b)列存表:大表,统计分析类查询,group、join比较多的表
怎么选择分布方式:
a)复制表:适用于记录较少的的维度表
b)哈希表:数据量比较大的实事表
怎么选择分布列:
a)列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列
b)在满足一条原则的情况下尽量不要选取存在常量filter的列。例如,表dwcjk相关的部分查询中出现dwcjk的列zqdh存在常量的约束(例如zqdh=’000001’),那么就应当尽量不用zqdh做分布列
c)在满足前两条原则的情况,考虑选择查询中的连接条件为分布列,以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量
怎么使用PCK局部聚簇:
a)受基表中的简单表达式约束。这种约束一般形如colopconst,其中col为列名,op为操作符=、>、>=、<=、<,const为常量值
b)尽量采用选择度比较高(过滤掉更多数据)的简单表达式中的列
c)尽量把选择度比较低的约束col放在PartialClusterKey中的前面
d)尽量把枚举类型的列放在PartialClusterKey中的前面
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。