支持异步执行的DDL语句 DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍dbproxy支持异步执行的DDL语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 异步执行DDL说明 正常客户端在执行DDL时,是同步等待服务端返回。用户DDL请求转为DdlTask(UdalDdlEventVO)提交到zk,然后等待zk任务的执行状态改变(执行完成),再将zk中的任务执行结果返回给客户端。这是一种同步等待的模式,如果DDL执行久,会话一直卡住,特别是admin执行时,会一直占用线程数量。 dbproxy支持客户端在DDL SQLl前加上HINT语法,提示dbproxy以异步方式执行DDL,dbproxy在接收到异步DDL请求时,用户DDL请求转为DdlTask(UdalDdlEventVO)提交到zk后,会立刻返回客户端成功,不等待dbproxy侧DDL执行完成返回结果。 HINT语法: plaintext / !HINT({"asyncDdlMode":true, "taskId":"{合法的uuid字符串}"})/ 注意 taskId要求是个合法的UUID,dbproxy会有校验。注意 / !HINT中间有个空格。 示例如下: plaintext / !HINT({"asyncDdlMode":true, "taskId":"9aa71832a94511ef80aa080027252449"})/CREATE TABLE IF NOT EXISTS testglobal ( k int(11) NOT NULL default 0 comment 'k', v int(11) NOT NULL DEFAULT '0' comment 'v', PRIMARY KEY (k) ) ENGINEInnoDB DEFAULT CHARSETutf8 comment'test'/sharding @@table name'testglobal' set type'global' and dn'testdb1,testdb2';/; 支持异步执行的DDL语句 支持异步执行的DDL语句如下: 管理数据表的DDL语句 设置分片规则的DDL语句 管理用户和角色的DDL语句 授权和回收权限的GRANT/REVOKE语句 全局序列和全局索引的DDL语句 索引相关的DDL语句