通过促进和应用社会中各种业务领域和各个行业的云云数据仓库分析DARANETICDB(统一称为AnalyticDB)在Ali Group中,现在我们已经促进了一些最佳实践。我希望每个人都必须提供帮助本文总结了AnalyticDB表设计的最佳体验,数据编写方面的最佳体验,有效的查询的最佳实践以及一些常见问题。
阐明:
1.在阅读本文之前,首先了解AnalyticDB的官方文档,以提前了解AnalyticDB;
2.本文中写的最佳实践主要针对AnalyticDB 3.0,而AnalyticDB 2.0原则上也适用。
AnalyticDB作为分布式数据仓库,可以为大量数据的真实时间分析带来出色的性能经验。为了使分析DB的性能优势在数据分析中全面发挥作用,在设计桌子时,您需要注意以下规则。
(1)选择右表类型(尺寸表或普通表)
·尺寸表:也称为广播表,它是数据仓库中的一个概念,该概念通常存储尺寸数据。在AnalyticDB表语句中,Bradcast有一个分布式的关键字。这些表将在群集的每个节点上存储一块数据。因此。
注意:尺寸表太大,这将导致数据存储空间的扩展。节点越多,越越膨胀,并且在实际时间写作过程中会导致性能下降,而IOPS则将较高。
·普通表:也称为分区表,事实,一般存储业务的主题数据。可以存储在普通表中的数据量通常很大。它可以存储数千万甚至万亿个数据。它可以通过第一个级别的分区和第二级分区来通过数据和第二级分区来管理。
(2)选择正确的分发键(第一级分区密钥)
在AnalyticDB中创建普通表时,默认情况下需要默认分布密钥来指定分布密钥,该键是由Hash(column_name,...)的分布式指定的,并且分区基于column_name的哈希值。
AnalyticDB支持多个字段作为分发键。
分配密钥的选择基础:
注意:不平衡的分配键很容易导致数据分布不均匀,这严重影响了写作和查询的效率。此外,很容易使单个节点磁盘充满写作,这会导致整个群集锁定。在特殊业务场景外,还为数据是否均匀,然后给出施工表,然后是加入的问题考虑了关键对齐。
(3)选择正确的分区密钥(辅助分区密钥)
对于具有大量数据的表,您需要考虑创建一个辅助分区表以进一步删除数据。设置次要分区后,还可以带来两个好处:
1)管理数据的生命周期。例如,设置一定数量的辅助分区后,将自动消除过期的辅助分区;
2)当查询条件被带到辅助分区字段时,可以将其切断辅助分区,从而提高查询的性能。
辅助分区的预防措施:
请提前计划所有表的辅助分区键,并充分利用次要分区。不要允许每个次要分区中的数据量太小。考虑使用本月作为辅助分区。如果辅助分区中的数据量太小,则需要存储很多元数据在数据库中。这些元数据存储在内存中。同时,它也将导致实时编写的高IOPS。
次要分区中的数据建议:
(4)选择正确的主键
定义表中的主要键以达到数据应力和数据更新。仅定义桌面表支持数据更新操作(删除,更新)。
主要关键的基础:
注意:主键的字段不应太大,并且字段的长度不应太长,否则会影响写作的性能。
(5)选择适当的集群索引
收集索引将对一个或多个字段进行分类,以确保相同或相似数据的字段存储在磁盘的相同或相似位置中。当将聚合指数中的字段用作查询条件时,查询结果将保持在磁盘的相同位置。磁盘的IO降低。
选择收集指数的基础:
将要携带的过滤条件领域可以设计为聚会索引。例如,E-商业卖方的观点平台中的每个卖家只能访问其自己的数据。卖方的ID可以定义为收集索引,以确保数据的位置并改善数据查询性能。
注意:目前,仅支持一个群集索引,但是聚集索引可以包含多个列。目前,除非检查非常分散的数据,否则聚合索引对性能非常有帮助。
(6)设计适当的数据类型
建议用户尽可能使用数值类型来减少字符串类型的使用。
AnalyticDB处理数值类型的性能远比处理字符串类型要好得多。原因是:
常见字符串数据的建议:
如果您在构建表之前不知道业务的数据分配特征,则可以在介绍数据导入之后使用优化建议进行优化。有关详细信息,请访问分析DB Console的表 - 构建诊断页面:https:https://help.aliyun.com/document_detail/211215.html,检查表施工问题和优化建议。
(1)真实时间写作
1.分批提交
在表格中编写数据时,您可以通过批处理包装来改善数据编写性能。预防措施如下:
示例示例:
2.更新数据
有许多更新数据的方法,区别如下:
注意:更新需要检查表以填充更新中的旧值,因此它的查询比替换更多。性能很低。不建议进行高频和大型更新操作。如果在线更新性能无法满足需求,则需要考虑将替换替换为申请端的旧值。
3.删除数据
有很多方法可以删除数据。区别如下:
(2)批次导入
1.如何选择批处理导入或实时导入
2.导入并发和资源描述
03高效查询的最佳实践
AnalyticDB的优点是,在大量数据方案中,面对复杂的查询,实现了真实的在线分析。AnalyticDB的查询和调整不仅与数据库查询优化通用方法兼容,而且还提供了一些专业的优化优化使其充分发挥分布式计算的性能优势的方法。
(1)查询和优化通用规则
根据Ye Zhengsheng在早期的“ Oracle DBA笔记”中的文章,数据访问优化符合以下渠道规则:
1.减少数据访问(减少磁盘访问)
尽可能尽可能多地使用过滤条件,并尽快过滤数据,从而减少参与计算的数据量,例如过滤可以在子查询中预先过滤的数据。
2.返回更少的数据(减少网络传输或磁盘访问)
在OLAP数据库中,因为列的数量通常更多,并且基于排名的清单或等级,因此选择 *的操作将导致更多请求io。因此,请避免选择 *的查询 *。
3.减少交互的数量(减少网络传输)
建议使用上面的批次简介来减少相互作用的数量。
4.减少服务器CPU开销(减少CPU和内存开销)
5.使用更多资源(增加资源)
(2)优化AnalyticDB的特殊场景
1.最佳外观查询实践
2.合理使用索引
合理使用索引是数据库的一个非常重要的手段,分析DB也不例外。在AnalyticDB中,每列将默认情况下创建索引。但是有例外。如果列的基数值低,则索引选择性不高。,并且通过索引查询可能会更糟。这次,建议在构建时关闭自动创建功能。如果构建表,您可以使用以下SQL语句,删除索引或绕过该索引通过提示索引。
3.大量使用聚集索引
当查询条件必须包括一列时,尤其是当数据非常分散在存储上时,列的建立将显着提高性能。您可以使用以下SQL语句添加聚集索引:
注意:如果表中已经存在数据,则直接添加群集索引不会对库存数据进行排序,您需要重新构建表,并在构建表时添加浓度列关键字;执行构建操作:构建table table_name力= true。
4.减少节点之间的数据相互作用
分布式数据库在分布式计算的优势中充分发挥作用,有时会增加cross -node.s之间的网络开销,尤其是请求的数据量很小,但是数据散布在更多的节点上,以及交叉网络费用非常明显。本文提供了以下两个想法:
在使用方面,AnalyticDB和MySQL的兼容程度高达99%,它支持多种连接方法,包括MySQL命令行,JDBC连接,Python连接,C#连接,PHP连接等等。详细的方法,请参阅官方文件:https://help.aliyun.com/document_detail/122512.html。
资料来源:阿里巴巴云