ADB支持在线修改分区表的生命周期 ALTER TABLE table_name partitions = N; 这个修改分区数是延迟生效的,会在下次build索引时生效,按照lifecycle清理数据也是在build索引时清理的。
ADB是否支持在线修改分布字段和分区字段? ADB不支持在线修改分布字段和分区字段,如需需要修改分布字段和分区字段,您可以尝试如下办法:先创建临时表,并通过INSERT INTO SELECT命令把原表数据导入到临时表。删除原表后,使用正确的分布字段或者分区字段建表,再次使用INSERT INTO SELECT把临时表数据导入到新建的表。
在ADB中,实时更新表必须包含主键字段。实时更新表在插入/删除(INSERT/DELETE)数据时,可通过主键来判断相同记录,以确定唯一记录。
主键组成: 业务 ID + 一级分区键 + 二级分区键。
某些情况下,业务 ID 会与一级分区键相同。如果表记录数特别大,从存储空间和 INSERT 性能考虑,一定要减少主键的字段数。
更新数据:AnalyticDB不支持update操作,可以通过主键覆盖的方式进行insert操作来实现和update同等的功能。
ADB的事实表支持二级分区策略,一级分区采用 HASH 算法,二级分区采用 LIST 算法。通过二级分区策略,ADB可将表数据分布到不同的节点。
在ADB中,设置一级分区的目的是将数据均匀分散到多个 CN 节点当中,以便充分发挥ADB分布式计算的能力。设置二级分区的目的是将数据分散到不同的存储文件上,与传统数据库的分区相似。
二级分区支持自动清除历史数据。在使用ADB的过程中,您必须防止垃圾数据自动清除有效数据。
AanlyticDB 内部采用 LIST 算法来划分二级分区,会自动删除多余的分区。
在ADB中,数据存储支持按一列或多列进行排序(先按第一列排序,第一列相同情况下,使用第二列排序),以保证该列中值相同或相近的数据保存在磁盘同一位置,这样的列称之为聚集列。
在ADB中,数值类型的处理性能远高于字符串类型,其原因如下:
数值类型的值定长、占用内存少、存储空间小。 数值类型计算更快,尤其是 JOIN 查询时。
在ADB中查询数据时,提前进行 optimize table 操作,可提升查询性能。
ADB支持的 Local-Merge(简称 LM)和 Full MPP Mode(简称 MPP)计算引擎。
当开启 MPP 引擎时,分析型数据库MySQL版自动对查询(Query)进行路由,并将 LM 引擎不支持的查询路由到 MPP 引擎,以兼顾分析型数据库MySQL版的性能和通用性。
在新建ADB数据库前,您需要从数据量QPS(Query per Second)和性能 RT(Response Time)两个维度对数据库所要占用的资源进行评估,以给ADB数据库分配最合理的资源量。
ADB分为高性能和大存储两种机型,对单个物理机器的存储规格如下:
高性能模型:1 TB/物理机器。 大存储:10 TB/物理机器。
如果ADB的数据量在百亿以上,物理机器在100台以上,则可以考虑选择大存储模式。但如果查询性能要求较高,则建议选择高性能模式。