使用要求
拆分键的类型必须是 DATE / DATETIME / TIMESTAMP 其中之一。
只能作为分表函数使用,但不能作为分库函数。
DRDS 实例的版本必须是 5.1.28-1320920 及其以上的版本。DRDS 版本说明请参考文档版本说明。
路由方式
根据分库键的时间值的月份数进行取余运算并得到分表下标。
使用场景
MM 适用于按月份数进行分表,分表的表名就是月份数。
使用示例
假设先按 id 对用户进行分库,再需要对 create_time 列按月进行分表,并且每个月能够对应一张物理表,则应该使用如下的建表 DDL:
create table test_mm_tb (
id int,
name varchar(30) DEFAULT NULL,
create_time datetime DEFAULT NULL,
primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
dbpartition by HASH(id)
tbpartition by MM(create_time) tbpartitions 12;
注意事项
按 MM 进行分表,由于一年的月份只有 12 个月,所以各分库的分表数不能超过 12 张分表
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这段描述是关于阿里云分布式关系型数据库服务(DRDS)中使用月份数分表功能(MM,Month Mode)的详细说明。下面我将根据提供的信息,帮助您更好地理解如何在DRDS中应用这一特性:
DATE
、DATETIME
或TIMESTAMP
。MM分表基于时间值的月份数进行取余运算来决定数据的存储位置。例如,如果设置12个分表,则每个月份的数据会被分配到对应的表中,因为一年有12个月,所以通过月份取余可以均匀分布数据。
适用于那些需要按月归档或分析数据的场景,比如财务记录、日志数据或者用户行为统计等,这样可以方便地管理和查询特定月份的数据。
假设您已经按照用户ID进行了哈希分库,接下来想根据创建时间create_time
按月分表,确保每个月的数据存储在一个单独的物理表中,可以使用如下DDL语句创建表:
CREATE TABLE test_mm_tb (
id INT,
name VARCHAR(30) DEFAULT NULL,
create_time DATETIME DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
DBPARTITION BY HASH(id)
TBPARTITION BY MM(create_time) TBPARTITIONS 12;
这里,DBPARTITION BY HASH(id)
指定了按ID哈希分库,而TBPARTITION BY MM(create_time) TBPARTITIONS 12;
则表示按create_time
的月份数进行分表,并预设了12个分表。
综上所述,MM分表是DRDS中一种高效处理时间序列数据的方法,特别适合需要按月进行数据分析和管理的场景。正确配置后,它能够帮助优化查询性能并简化数据维护工作。