目前只能重建表,先创建一个新的主键表,然后使用INSERT OVERWRITE INTO SELECT将源表的数据导入到新的主键表中,然后重命名互换表名。重建表的流程同更改分区键/分布键:https://help.aliyun.com/document_detail/123430.html?spm=a2c4g.92664.0.i3![image.png](https://ucc.alicdn.com/pic/developer-ecology/wyvq5mjsckydw_8fb8073780714131a7d3dc8aebaf3a54.png)
,此回答整理自钉群“云数据仓库ADB-开发者群”
ADB分析型数据库,是阿里云平台上资源,原名叫云原生数据仓库AnalyticDB Mysql,俗称ADB分析型数据库,云原生数据仓库AnalyticDB MySQL版支持通过ALTER TABLE修改表。
AnalyticDB MySQL集群不支持更改分区键和分布键。如果您的业务必须更改分区键或分布键,可通过以下方案解决。
假设您有一个表order需要将现有分布键order_id更改为customer_id,操作如下:
使用分布键customer_id创建一个临时表order_auto_opt_v1。
使用INSERT OVERWRITE INTO SELECT将源表的数据导入到临时表,
判断分布键是否合理。数据导入后,需要判断新的分布键是否有数据倾斜问题,详情请参见分布字段合理性诊断。
使用RENAME TABLE <源表表名> to <new_源表表名>;更改源表表名。
使用RENAME TABLE <临时表表名> to <源表表名>;将临时表表名更改为源表表名。
主键:表必须包含主键。由业务id、一级分区键组成,有些情况业务id与一级分区相同。对于记录量特别大的表,从存储空间和insert性能考虑,一定要减少主键的字段数。
维度表组(系统自带):自带维度概念的表(例如省份表等),可以放到维度表组下,数据库创建完毕后,系统会默认创建一个维度表组,所有维度相关的表,可以放到维度表组下。
更新数据:AnalyticDB不支持update操作,可以通过主键覆盖的方式进行insert操作来实现和update同等的功能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。