检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
by和Order by SQL调优建议 当group by 字段不是表中现有的数据列时,可以使用generated column机制(MySQL5.7版本以上支持,5.6及之前版本可新建普通字段和添加索引),创建新列并添加索引,将新创建字段作为group by条件,避免使用临时表。
为单个空格来匹配。 正则匹配:禁止在对应逻辑库执行含有该正则表达式的SQL语句。 配置的黑名单SQL之间以英文分号隔开,前缀匹配、全量匹配、正则匹配中的SQL语句大小分别不超过1KB。 如果在配置SQL黑名单弹窗中清除之前编辑的前缀匹配与全量匹配中的SQL语句,并单击“确定”,则表示清空之前配置的SQL黑名单。
什么是分布式数据库中间件 产品定义 分布式数据库中间件(Distributed Database Middleware,简称DDM),是一款分布式关系型数据库中间件。兼容MySQL协议,专注于解决数据库分布式扩展问题,突破传统数据库的容量和性能瓶颈,实现海量数据高并发访问。 DD
DDL概述 DDM支持通用的DDL操作:建库,建表,修改表结构等,但实现方式与普通的MySQL数据库有所区别。 在MySQL客户端执行DDL操作 rename table name不支持与其他DDL语句在同一条SQL执行。 对拆分表执行修改字段名操作的同时执行类似SELECT *
DDL主要功能为在对应DDL上,提供ALGORITHM、LOCK显示声明的支持,并提供透传至后端数据库节点能力(此功能需满足DDM内核版本大于等于3.1.0版本)。 当DDM实例关联的DN实例为MySQL5.7版本时,Online DDL操作支持以下语法: ALTER TABLE tbl_name
0版本。 开启读写分离 登录分布式数据库中间件控制台。 在实例管理列表页面,选择目标实例。 单击实例名称,进入基本信息页面。 在左侧导航栏,选择“DN管理”页签,单击“开启读写分离”。 在弹窗中单击“确定”,开启读写分离。 对于RDS for MySQL实例来说,开启读写分离后,会将
java:104) at com.mysql.jdbc.MysqlIO.invokeStatementInterceptorsPost(MysqlIO.java:2885) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2808)
常用概念 数据节点 数据节点是分布式数据库中间件服务的最小管理单元,表示DDM关联的RDS for MySQL实例,DDM目前仅支持这种引擎,一个实例代表了一个独立运行的数据库。您可以在一个DDM实例中通过创建多个逻辑库管理多个数据节点,并且可以独立访问数据节点。 DDM实例自身
同一种工作模式下逻辑库分片的数量。 shard_unit不为空, shard_unit与关联rds数量的乘积 shard_unit为空,大于关联的RDS数量,小于等于关联rds数量*64。 shard_unit 否 Integer 单个RDS上的逻辑库分片数。非必选 非拆分逻辑库,固定为1。 拆分逻辑库,大于等于1,小于等于64。
tf8mb4。修改DDM服务端字符集时,DDM服务端字符序必须同步修改为对应类型的值。 枚举值: gbk utf8 utf8mb4 collation_server 否 String DDM服务端字符序。修改DDM服务端字符序时,DDM服务端字符集必须同步修改为对应类型的值。 枚举值:
--mysql-user=<user> --mysql-password=<password> --mysql-table-engine=innodb --rand-init=on --mysql-host=<host> --mysql-port=5066 --mysql-db=<db-name>
迁移源/目标 信息项 源RDS实例 RDS实例连接地址 RDS实例侦听端口 数据库用户 数据库名称 数据库表名 目标DDM实例 DDM实例连接地址 DDM实例侦听端口 DDM实例用户名 DDM关联RDS实例上创建的数据库名称 新建RDS实例连接地址 新建RDS实例侦听端口 RDS实例用户名 数据库名称
功能总览 分布式数据库中间件(Distributed Database Middleware,简称DDM),是一款分布式关系型数据库中间件。兼容MySQL协议,专注于解决数据库分布式扩展问题,突破传统数据库的容量和性能瓶颈,实现海量数据高并发访问。 DDM支持的功能如表1所示。 表1
拆分键的数据类型必须是整数类型(INT, INTEGER, BIGINT, MEDIUMINT, SMALLINT, TINYINT, DECIMAL(支持精度为0的情况))或字符串类型(CHAR,VARCHAR)。如果使用日期函数结合hash算法,拆分键的数据类型必须是DATE / DATETIME / TIMESTAMP其中之一。
数据节点,且数据节点没有被其他DDM实例使用。DDM将在关联的数据节点上新建数据库,不会影响已有的库表。 创建逻辑库时,同一个逻辑库,MySQL大版本需要相同,不可以混用。 数据节点的规格建议不小于DDM的规格,否则会影响性能。 创建逻辑库时,同一个DDM实例可以创建多个逻辑库。多个逻辑库可关联同一个数据节点。
该方式适用于水平拆分业务后业务规模快速增长的场景,可在业务初期减少成本。也适用于RDS for MySQL实例无法满足存储空间,读写性能的场景。 图1 分片数不变,增加RDS for MySQL实例数量 方式二:增加分片数,不增加数据节点数量 该变更方式增加分片数,不增加数据节
简介 DDM兼容MySQL协议及其语法,但因分布式数据库与单机数据库之间存在一定的差异性,导致SQL使用存在些限制。 在评估DDM方案之前,请先完成当前应用中的SQL语法及与DDM支持语法的兼容性评估。 MySQL EXPLAIN 当您在需要执行的SQL语句前加上EXPLAIN,
DECIMAL(支持精度为0的情况))或字符串类型(CHAR,VARCHAR)。 在SQL语句中对整数类型拆分键设置值时不要进行类型转换,类型转换可能造成路由计算失败后路由至默认分片,造成目标数据查询不到。 路由方式 根据拆分键的键值直接按分库数/分表数取余。如果键值是字符串,则字符串会被计算成哈希值
分库路由结果四舍五入到最接近的整数。 分表:16 % (8 * 3) = 16 分库 :16 / 3 = 5 方式二:拆分键是字符类型 表2 拆分键是字符型时的计算方式 条件 算法 举例 分库拆分键 ≠ 分表拆分键 分库路由结果 = hash(分库拆分键值) % 分库数 分表路由结果
长度为1~36个字符。 不能为空字符串,不能以“_sys_”开头和以空格开头、结尾。 不能包含下列字符: 非打印字符ASCII(0-31),“*”,“<”,“>”,“\”,“,”,“|”,“/”。 值:该项为必选参数。 可以不填值,此时默认为空字符串。 长度为0~43个字符。 不能包含下列字符: