检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
KEY(id) ); 广播表 在业务数据库中,存在一些数据量不大,更新频率较低,但常常需要用来做关联查询的表。 为了方便这类表与拆分表进行关联操作,DDM实例提供了一种“广播表”,广播表具有以下特点: 广播表在各分片中数据一致。插入、更新和删除数据会实时在每一个分片中执行。 对广播表的查询,仅在一个分片中执行。
where_condition] 语法限制 WHERE条件中不支持子查询(相关子查询和非相关子查询)。 不支持在多表删除中删除广播表中的数据(目标表列表中不可包含广播表)。 父主题: DML
不支持使用子查询(相关子查询和非相关子查询)。 UPDATE语句中的where_condition不支持计算表达式及其子查询。 不支持在多表更新中修改广播表(广播表中的列不可出现在 SET 中赋值语句的左侧)。 不支持更新逻辑表的拆分键字段,更新拆分键字段可能导致数据重新分布,DDM 暂不支持。
DDM是否支持分布式JOIN DDM支持分布式JOIN。 表设计时,增加字段冗余 支持跨分片的JOIN,主要实现的方式有三种:广播表,ER分片和ShareJoin。 DDM目前禁止多个表的跨库update和delete。 父主题: SQL语法类
查看数据库下指定逻辑表的拆分情况。 show rule from <table_name> 输出详解: TABLE_NAME :表名。 BROADCAST:是否为广播表(0:否,1:是)。 DB_PARTITION_KEY:分库的拆分键,没有分库的话,值为空。 DB_PARTITION_POLICY:分
为了保持数据完整性,需要先停止业务后再进行数据迁移。 DDM不支持以自动新建库或者新建拆分表、广播表的方式导入数据。因此导入数据前需要先创建好相同名称的逻辑库,相同拆分表、广播表结构的逻辑表,然后再进行数据导入。各类逻辑表创建方式请参见表2。 目标DDM使用的RDS for
为了保持数据完整性,需要先停止业务后再进行数据迁移。 DDM不支持以自动新建库或者新建拆分表、广播表的方式导入数据。因此导入数据前需要先创建好相同名称的逻辑库,相同拆分表、广播表结构的逻辑表,然后再进行数据导入。各类逻辑表创建方式请参见表2。 目标DDM使用的RDS for
建,根据表的性质可选择创建为广播表、单表、拆分表。广播表和单表的使用场景请参考广播表和单表的使用场景。 图1 原数据库表 图2 address_test表数据 图3 user_test表数据 执行以下命令,将源数据库中的“user_test”创建为广播表,将“address_te
查看address_test表数据 执行以下命令查看表数据分布情况。广播表各分片数据一致,拆分表数据会按照拆分算法分布在选取的分片中。 show topology from <table_name>; 图3 广播表user_test 图4 拆分表address_test 父主题:
合理制定分片策略 介绍创建拆分表时如何选择拆分键和拆分算法。 如何选择DDM逻辑库分片数 介绍创建拆分库时如何合理选择逻辑库分片。 广播表和单表的使用场景 介绍广播表和单表的常用场景。 DDM事务模型 介绍DDM的事务模型。 DDM SQL使用规范 介绍DDM中的SQL使用规范。 如何将单RDS数据整库迁移至DDM
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci DBPARTITION BY HASH(id); 广播表 如下为创建广播表的样例: CREATE TABLE broadcast_tbl ( id bigint NOT NULL AUTO_INCREMENT
ER BY、 LIMIT)。 广播表 由于DDM的广播表机制是statement级别广播,如果使用运行结果不确定的函数,会造成广播表每个分片的数据不一致,请不要在广播表场景中使用这些函数。如果SQL中使用了这些函数,需要计算好,再以常量形式运用到广播表的操作中。运行结果不确定的函数包括但不限于以下函数:
该变更方式增加分片数,不增加数据节点数量。此种情况分片总数、分表总数、分表规则都会发生变化,数据将重新分布到不同的分片中,原来分片上的表将被清理,广播表分片数量增加。 该方式适用于单个物理表数据量过大,查询性能受到限制,但是整体RDS for MySQL实例可用空间充足的场景。 图2 增加分片数,不增加RDS
REPEAT、WHILE…DO…END WHILE 等复合语句。 DDL语法 拆分表和广播表不支持外键。 不支持修改分片字段(拆分键)。 不支持ALTER DATABASE Syntax。 不支持从另一张表创建新的拆分表、广播表。 create table不支持generated column语法。
DATABASE_NAME:逻辑库名称。 TABLE_NAME:逻辑表名称。 TABLE_TYPE:逻辑表类型。 SINGLE:单表。 BROADCAST:广播表。 SHARDING:拆分表。 DDL_CONSISTENCY:该逻辑表对应所有物理表DDL是否一致。 TOTAL_COUNT:该逻辑表有几个物理表。
从Mycat整库导出数据。 连接DDM导入整库数据。 拆分表:分片规则为按范围range类(含年月日等日期类) 拆分表:拆分算法为range(含日期函数) 广播表 广播表 约束限制 为了保持数据完整性,需要先停止Mycat业务后再进行数据迁移。 该场景不支持通过DDM关联Mycat关联的RDS进行数据
DN节点binlog本地保留时间检查 Binlog在DN节点上的保留时间必须足够长。 如果您的DN节点是RDS实例,无需解决。 广播表数据一致性检查 保证广播表数据一致后再执行分片变更。 请联系DDM运维人员。 源物理分片的字符集和排序规则检查 保证分片变更后字符的展示和排序一致。 请联系DDM运维人员。
为了保持数据完整性,需要先停止业务后再进行数据迁移。 DDM不支持以自动新建库或者新建拆分表、广播表的方式导入数据。因此导入数据前需要先创建好相同名称的逻辑库,相同拆分表、广播表结构的逻辑表,然后再进行数据导入。各类逻辑表创建方式请参见表2。 新增RDS for MySQL实
nextval”、“dml_test_1.seq_test.currval”。 全局序列结合insert和replace的使用只支持拆分表,不支持广播表和单表。 nextval和currval在insert和replace语句中是从左到右执行的,如果一条语句使用同一个全局序列nextval多次,每出现一次就递增一次。
需要在DDM节点进行二次计算,并且所需要的临时表大小已超过实例设置。对于以上情况如遇到临时表相关报错,可评估SQL是否存在优化空间,如设置广播表、增加分批查询条件或根据分库分表架构自身特点调整SQL写法。如果无优化空间,同时评估数据量大小总体可控(参与实际计算的数据不超过300万