云服务器内容精选

  • 语法限制 不支持INSERT DELAYED...。 不支持不包含拆分字段的INSERT。 暂不支持PARTITION 语法,建议不要使用partition表。 INSERT操作不支持datetime(YYYY-MM-DD HH:MM:SS)中“YYYY”取值1582年及之前年份。 INSERT操作不支持插入拆分键值为DEFAULT关键字。 拆分表执行INSERT操作时如果指定了自增值,只影响该插入数据的自增值。后续数据插入时如果不指定自增值,仍以原自增值为基础进行自增。 不支持在VALUES中调用REPEAT函数时引用表中的列作为参数。 例如: INSERT INTO T(NAME) VALUES(REPEAT(ID,3)); 使用INSERT DUPLICATE...更新拆分键时仅支持常量,不支持VALUES、LAST_INSERT_ID等函数或运算表达式。 不支持INSERT DUPLICATE语句更新含GSI的拆分表。
  • 常用语法 table_references: table_reference [, table_reference] ... table_reference: table_factor | join_table table_factor: tbl_name [[AS] alias]| table_subquery [AS] alias| ( table_references ) join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition]| table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition| table_reference [{LEFT|RIGHT} [OUTER]] JOIN table_factor join_condition: ON conditional_expr| USING (column_list)
  • SQL高级功能 暂不支持Prepare\EXECUTE语法。 暂不支持用户自定义数据类型、自定义函数。 暂不支持视图、存储过程、触发器、游标。 暂不支持BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE等复合语句。 暂不支类似IF,WHILE等流程控制类语句。 暂不支持的预处理类型: PREPARE EXECUTE 不支持在建表语句中,对索引增加COMMENT形式的注释。 父主题: SQL语法
  • 迁移须知 迁移过程中可能会出现业务中断情况,中断时长与迁移数据量大小、网络情况相关。 数据迁移是一项比较复杂的操作,建议在业务量较低时进行。本指南仅供参考,您需要根据自己业务场景、数据量、停机时间要求等情况,设计合适的迁移方案。 对于数据表和数据量较大的场景,建议您在管理控制台右上角,提交工单或售后服务联系DDM客服进行支撑,在正式数据迁移前进行充分的迁移演练测试。 由于DDM仅支持通过弹性云服务器(E CS )访问,因此需要先将数据库导出为文件并上传到ECS,然后从ECS将文件中的数据导入到DDM。
  • 常用语法 INSERT [INTO] tbl_name[(col_name,...)]{VALUES | VALUE} ({expr },...),(...),...[ ON DUPLICATE KEY UPDATEcol_name=expr[, col_name=expr] ... ]ORINSERT [INTO] tbl_nameSET col_name={expr | DEFAULT}, ...[ ON DUPLICATE KEY UPDATEcol_name=expr [, col_name=expr] ... ]
  • 操作步骤 登录 分布式数据库 中间件控制台。 在实例管理列表页面,单击目标实例名称,进入实例基本信息页面。 在左侧导航栏选择“逻辑库管理”,查看对应实例逻辑库列表。 在逻辑库列表页面,选择目标逻辑库,操作列单击“删除”。 在删除确认弹窗中,单击“是”。 请勿直接在数据节点列表删除和DDM逻辑库关联的实例,会直接导致逻辑库故障。 如需删除数据节点上的数据,请在删除逻辑库的弹窗中勾选“删除数据节点上的数据”。 如果您想删除逻辑库,请首先确认数据节点是否存在。如果实例已删除,请先单击“同步DN信息”,再进行删除操作。 如果您所连接的数据节点有名称、引擎、引擎版本号、最大连接数max_connections、端口号、IP等信息的修改,不需要删除逻辑库,只需单击“同步DN信息”同步最新配置。
  • 前提条件 DDM实例中已创建逻辑库。 已有RDS for MySQ L实例 与DDM实例处于相同的VPC,该RDS for MySQL实例没有被其它DDM实例使用。如果需增加DN实例,则DN实例与DDM实例需要处于相同的VPC。 本特性需满足DDM内核版本大于等于3.0.8.3版本,建议您使用最新的内核版本来进行分片变更。 DDM实例关联的数据节点不能处于只读状态。 拆分模式为“非拆分”的逻辑库暂不支持分片变更功能。
  • 语法限制 不支持使用子查询(相关子查询和非相关子查询)。 UPDATE语句中的where_condition不支持计算表达式及其子查询。 不支持在多表更新中修改广播表(广播表中的列不可出现在 SET 中赋值语句的左侧)。 不支持更新逻辑表的拆分键字段,更新拆分键字段可能导致数据重新分布,DDM 暂不支持。 UPDATE操作不支持datetime(YYYY-MM-DD HH:MM:SS)中“YYYY”取值1582年及之前年份。 UPDATE操作不支持更新拆分键值为DEFAULT关键字。 UPDATE不支持在一个语句中对同一字段重复更新。 UPDATE不支持关联更新拆分键。 不支持含有JSON类型字段的二级拆分表进行带子查询的拆分键更新。 UPDATE不支持自关联更新。 关联更新中,不支持在目标列的赋值语句或表达式中引用其它目标列,将造成更新结果不符合预期。 例如: update tbl_1 a,tbl_2 b set a.name=concat(b.name,'aaaa'),b.name=concat(a.name,'bbbb') on a.id=b.id。 关联更新不支持不带关联条件的Join。
  • 约束限制 目标DDM实例、RDS for MySQL实例所在ECS必须保证网络互通。 为了保持数据完整性,需要先停止业务后再进行数据迁移。 DDM不支持以自动新建库或者新建拆分表、广播表的方式导入数据。因此导入数据前需要先创建好相同名称的逻辑库,相同拆分表、广播表结构的逻辑表,然后再进行数据导入。各类逻辑表创建方式请参见表2。 目标DDM使用的RDS for MySQL实例与自建MySQL的MySQL版本需要保持一致。
  • 使用示例 增加字段 # 向表t2中增加字段x,类型为int,Online DDL 算法为inplace,锁为NONEALTER TABLE t2 ADD COLUMN x INT, ALGORITHM=INPLACE, LOCK=NONE; 修改字段 # 修改表t2的字段x,修改字段类型为varchar(255),Online DDL 算法为copy,锁为sharedALTER TABLE t2 MODIFY x VARCHAR(255), ALGORITHM=COPY, LOCK=SHARED; 修改编码 # 修改表t2编码为utf8,排序算法为utf8_bin,Online DDL 算法为copy,锁为sharedALTER TABLE t2 CHARACTER SET utf8 COLLATE utf8_bin, ALGORITHM=COPY, LOCK=SHARED;
  • 建表语法 假设用户的实例里已经分了8个物理库,现有一个业务想按年日进行分库。要求同一天的数据都能落在同一张分表,并且两年以内的每一天都能单独对应一张分表,查询时带上分库分表键后能直接将查询落在某个物理分库的某个物理分表。 用户这时就可以使用YYYYDD分库函数来解决:业务要求两年以内的每天都对应一张分表(即一天一张表),由于一年最多有366天,所以两年至少需要创建732个物理分表才能满足用户的场景。用户的DDM有8个分库,所以每个分库应该建92张物理分表(732 / 8 = 91.5,取整为 92,分表数建议是分库数的整数倍)。建表语法如下所示: create table test_yyyydd_tb ( id int, name varchar(30) DEFAULT NULL, create_time datetime DEFAULT NULL, primary key(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 dbpartition by YYYYDD(create_time) tbpartition by YYYYDD(create_time) tbpartitions 92; 只分库的建表语法: create table YYYYDD(id int,name varchar(30) DEFAULT NULL,create_time datetime DEFAULT NULL,primary key(id)) ENGINE = InnoDB DEFAULT CHARSET = utf8dbpartition by YYYYDD(create_time);
  • 算法计算方式 表1 算法计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 拆分键:yyyy-MM-dd 分库路由结果 = (yyyy * 366 + 一年第几天) % 分库数 分表路由结果 = (yyyy * 366 + 一年第几天) % 分表数 拆分键:2012-12-31 分库 :(2012 * 366 + 366) % 8 = 6 分表:(2012 * 366 + 366) % 3 = 0 分库拆分键 = 分表拆分键(拆分键) 拆分键:yyyy-MM-dd 分表路由结果 = (yyyy * 366 + 一年第几天) % (分库数 * 分表数) 分库路由结果 = 分表路由结果 / 分表数 说明: 分库路由结果四舍五入到最接近的整数。 拆分键:2012-12-31 分库 :(2012 * 366 + 366) % (8*3) = 6 分库 :6 / 3 = 2
  • The Subquery as Scalar Operand 示例 SELECT (SELECT id FROM test1 where id=1); SELECT (SELECT id FROM test2 where id=1)FROM test1; SELECT UPPER((SELECT name FROM test1 limit 1)) FROM test2;
  • Subqueries with ANY, IN, NOT IN, SOME,ALL,Exists,NOT Exists 语法 operand comparison_operator SOME (subquery)operand comparison_operator ALL (subquery)operand comparison_operator ANY (subquery) operand IN (subquery) operand not IN (subquery)operand exists (subquery)operand not exists (subquery)
  • 检查当前逻辑库下所有逻辑表各分表的DDL一致性 用途:用于对某逻辑库所有的逻辑表的一致性情况进行全局概览。 命令格式: check table 命令输出: 如果全部逻辑表都一致, 输出结果为: 如果存在不一致的逻辑表, 输出结果为: 输出详解: 每一行表示一个逻辑表的检查结果概况。 DATABASE_NAME:逻辑库名称。 TABLE_NAME:逻辑表名称。 TABLE_TYPE:逻辑表类型。 SINGLE:单表。 BROADCAST:广播表。 SHARDING:拆分表。 DDL_CONSISTENCY:该逻辑表对应所有物理表DDL是否一致。 TOTAL_COUNT:该逻辑表有几个物理表。 INCONSISTENT_COUNT:该逻辑表有几个物理表的DDL不一致。 DETAILS:DDL不一致的物理表名。 父主题: CHECK TABLE