开发者社区 > 数据库 > 数据仓库 > 正文

如何在AnalyticDB MySQL版中合理建表?

如何在AnalyticDB MySQL版中合理建表?

展开
收起
冰激凌甜筒 2023-04-04 19:20:58 273 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在AnalyticDB for MySQL中,建表需要综合考虑数据量、数据类型、查询方式、查询效率等因素。下面是一些建表的建议:

    1.使用合适的数据类型

    在建表时需要选择合适的数据类型来存储数据,不仅可以节省存储空间,也可以提高查询效率。您应该了解每种数据类型的特性,如整数类型、字符类型、日期时间类型等,并根据实际情况选择。

    2.选择合适的存储引擎

    AnalyticDB for MySQL支持多种存储引擎,包括InnoDB、MyISAM等。在选择存储引擎时,需要根据实际情况选择是否需要事务支持、并发处理能力、索引等因素。一般来说,在需要较高并发性和事务性的业务中,使用InnoDB存储引擎是比较合适的选择。

    3.使用合适的索引

    在AnalyticDB for MySQL中,为表建立合适的索引可以提高查询效率。需要根据实际查询需求,选择建立主键索引、唯一索引、普通索引等。

    4.分区

    当表数据较大时,分区是提高查询性能和数据管理效率的一种有效方式。您可以按照数据特性、时间、地域等因素进行分区。

    5.规范表结构

    在建表时,应遵循数据库设计规范,规范表结构,统一定义列名和数据类型,减少列的冗余和浪费。这样可以提高数据的可读性和可维护性。

    2023-04-25 18:36:40
    赞同 展开评论 打赏
  • 分布字段的选择(DISTRIBUTED BY HASH)

    AnalyticDB MySQL版是分布式数据库,数据需要根据分布字段均匀地分布在各个后台节点才能保证尽可能高的利用资源。分布字段选择不合理,会导致写入时存在热点,降低写入性能。建表语句请参考:CREATE TABLE

    分区字段合理性(PARTITION BY)

    AnalyticDB MySQL版后台以分区为粒度进行文件的存储、索引的构建以及查询。每个分区的数据行数过少,可能导致查询时扫描的二级分区数较多,降低扫描性能;如果每个分区的数据行数过多,可能频繁触发该分区的索引构建,所以合理的二级分区对系统整体稳定性非常重要。分区表其他问题请回复”分区表“查看。

    复制表合理性(DISTRIBUTED BY BROADCAST)

    复制表在每个后台节点都保存一份,好处是在需要和复制表进行JOIN时,不需要对复制表进行网络传输,提高系统的并发处理能力。但对复制表进行增删改时,会对涉及的数据行进行重复多次的操作,以保证每个复制表的副本都生效。所以复制表不宜过大,也不宜对复制表频繁进行增删改查操作。复制表建表详情说明请参考:CREATE TABLE,此回答整理自钉群“云数据仓库ADB-开发者群”

    2023-04-04 19:51:21
    赞同 展开评论 打赏

阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 相关电子书

    更多
    基于云原生数据仓库AnalyticDB PG的最佳实践 立即下载
    新氧云原生全栈数仓最佳实践 立即下载
    离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进 立即下载

    相关镜像