检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
拆分算法使用说明 MOD_HASH算法 MOD_HASH_CI算法 RIGHT_SHIFT算法 MM按月份哈希 DD按日期哈希 WEEK按星期哈希 MMDD按月日哈希 YYYYMM按年月哈希 YYYYDD按年日哈希 YYYYWEEK按年周哈希 HASH算法 Range算法 父主题:
拆分算法概述 支持的拆分算法概览 DDM是一个支持既分库又分表的数据库服务,目前DDM分库函数与分表函数的支持情况如下: 表1 拆分算法概览表 拆分函数 描述 能否用于分库 能否用于分表 MOD_HASH 简单取模 是 是 MOD_HASH_CI 简单取模(大小写不敏感) 是 是
t=7。根据拆分键的值在某个范围路由到对应的分片上。 算法计算方式 方式一:拆分键是整型 表1 拆分键是整型时的计算方式 条件 算法 举例 拆分键是整型 分库路由结果 = 根据分库拆分键值在设定的元数据的范围进行路由 分库 :拆分值为3属于3-4=1,则路由到1分片 方式二:拆分键是日期类型
当计算路由结果时,计算拆分键值的CRC32值然后对102400取余,根据计算结果落到某个范围进行路由(大小写敏感)。 算法计算方式 方式一:拆分键非日期类型 表1 拆分键非日期类型 条件 算法 举例 拆分键非日期类型 分库路由结果 = crc32(分库拆分键值) % 102400 分表路由结果 =
成路由计算(大小写敏感)。 例如:MOD_HASH('8')等价于8%D(D是分库数目/分表数)。 算法计算方式 方式一:拆分键是整型 表1 拆分键是整型时的计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 分库路由结果 = 分库拆分键值 % 分库数 分表路由结果 = 分表拆分键值
RIGHT_SHIFT算法 适用场景 当拆分键大部分键值的低位部位区分度比较低而高位部分区分度比较高时,则适用于通过此拆分算法提高散列结果的均匀度。 使用说明 拆分键的数据类型必须是整数类型。 路由方式 根据拆分键的键值(键值必须是整数)有符号地向右移二进制移指定的位数(位数由用户通过
WEEKDAY('2019-01-15'); -> 1 上述SQL返回值为1,表示2019-01-15是周二,因为周日为一周中的第一天,所以周二则为一周中的第三天。 算法计算方式 表1 算法举例 条件 算法 举例 无 分表路由结果 = 分表拆分键值 % 分表数 分表拆分键值 :2019-1-15
D(D是分库数目/分表数)。 "2012-12-31"是2012年第366天,所以为"2012 * 366+366"。 算法计算方式 表1 算法计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 拆分键:yyyy-MM-dd 分库路由结果 = (yyyy * 366 + 一年第几天)
例如:2019-1-15,当根据分库键确定分库后,确定分表的计算方式是:月份mod分表数,即:1 mod 12 = 1。 算法计算方式 表1 算法举例 条件 算法 举例 无 分表路由结果 = 分表拆分键值 % 分表数 分表拆分键值 :2019-1-15 分表:1 % 12 = 1 建表语法
此处“2012-12-31”是2013年第一周,所以为"2013* 54+ 1"。 YYYYWEEK的具体用法请参见YEARWEEK函数。 算法计算方式 表1 算法计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 拆分键:yyyy-MM-dd 分库路由结果 = (yyyy * 54 + 一年第几周)
例如,YYYYMM(‘2012-12-31 12:12:12’) 等价于 (2012 * 12 + 12) % D(D是分库数目/分表数)。 算法计算方式 表1 算法计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 拆分键:yyyy-MM-dd 分库路由结果 = (yyyy * 12 + MM) %
例如:2019-1-15,当根据分库建确定分库后,确定分表的计算方式是:一个月的第几天mod分表数,即:15 mod 31 = 15。 算法计算方式 表1 算法举例 条件 算法 举例 无 分表路由结果 = 分表拆分键值 % 分表数 分表拆分键值 :2019-1-15 分表:15 % 31 = 15
、mediumint、integer、int数据类型不建议作为自增键的类型,容易越界造成值重复。 分库分表 假设使用HASH的拆分库算法,拆分表算法为MOD_HASH,样例如下: CREATE TABLE tbpartition_tbl ( id bigint NOT NULL AUTO_INCREMENT
数据查询不到。 路由方式 实现原理同MOD_HASH算法一致,区别在于MOD_HASH_CI算法对大小写不敏感,而MOD_HASH算法对大小写敏感。 算法计算方式 方式一:拆分键是整型 表1 拆分键是整型时的计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 分库路由结果 =
分表的计算方式是:一年的第几天mod分表数,即:15 mod 366 = 15; 2019-1-15是一年的第15天。 算法计算方式 表1 算法举例 条件 算法 举例 无 分表路由结果 = 分表拆分键值 % 分表数 分表拆分键值 :2019-1-15 分表:15 % 366= 15
命令格式: check table 命令输出: 如果全部逻辑表都一致, 输出结果为: 如果存在不一致的逻辑表, 输出结果为: 输出详解: 每一行表示一个逻辑表的检查结果概况。 DATABASE_NAME:逻辑库名称。 TABLE_NAME:逻辑表名称。 TABLE_TYPE:逻辑表类型。
MISSING_COLUMNS:表示该物理表缺少的列。 DIFFERENT_COLUMNS: 表示该物理表属性不一致的列( 包括名称, 类型)。 KEY_DIFF:表示该物理表不一致的索引。 ENGINE_DIFF:表示该物理表不一致的引擎。 CHARSET_DIFF:表示该物理表不一致的字符集。
delete_rds_data=true ddm:instance:delete vpc:ports:delete √ √ “√”表示支持,“×”表示暂不支持。 父主题: 授权策略及授权项
不建议5张表以上进行join操作。 join查询操作建议不要开启事务。 不建议在事务中进行join查询,开启事务会影响DDM对join算法的选择,无法使用最高效的算法。 这里的大表和小表的意思不是指原始表的规模,指的是经过where条件过滤之后的数据规模。 子查询 不建议子查询包含在OR表
为了方便日志清理和转储,采用range拆分算法,对时间字段用日期函数转换成年,表示按年存储到各个分片上,详情参见如下示例。 如何选择拆分算法 拆分算法即将逻辑表中数据拆分到多个数据库分片上的算法,DDM支持hash和range两大类拆分算法。 hash类 将数据均匀分布在各个分片。