数据量限制
由于资源的有限性,为了隔离用户间性能影响,云数据库 MySQL 对各种类型的 MySQL 实例做了数据量限制。下面从技术角度介绍 MySQL 在大数据量下的单个实例以及单个表使用的影响:
大数据量实例:云数据库默认存储引擎是 InnoDB,当实例中的数据及索引页均能被 InnoDB 的 cache、buffer 所缓存住时,MySQL 实例能够支持很大的并发访问。如果实例数据量过大,会导致 cache、buffer 频繁的数据换出换进,MySQL 瓶颈很快转到 IO 上,访问吞吐量直趋下降(例如,某云数据库实例本可以支持8000次每秒访问,当数据量为 cache、buffer 大小的两倍时,仅能支持700次每秒左右的访问)。
大数据量表:单表数据量过大后,MySQL 对单表资源的管理成本(数据、索引等)变更,将直接影响表的处理效率。例如,当一个业务表(InnoDB)数据量达到了10GB后,更新操作延迟明显增大,直接影响了业务的响应时间,后来不得不通过迁移分表来缓解这个问题。
说明:
单个实例的表数量超过30万后,可能会造成备份、监控、升级失败,同时也会影响数据库监控,请合理规范表的数量,控制单个实例表数量不超过30万。
连接数限制
MySQL 的连接数上限为 MySQL 的系统变量 max_connections,当 MySQL 实例连接数量超过 max_connections 时,新的连接将无法建立。
云数据库默认连接数可在 MySQL 控制台 单击实例 ID,进入数据库管理 > 参数设置页查看。用户可以根据需要自行调整 max_connections 的值。但连接数越多,消耗系统资源也越多。如果连接数超过实际系统的负载承受能力范围,必然影响系统服务质量。
连接云数据库的 MySQL 客户端的限制
建议使用 CVM 系统自带的 MySQL 客户端和 lib 库,连接云数据库实例。
关于慢查询的说明
对于使用 Linux 云服务器的开发者,可以通过云数据库导出工具获取慢查询日志,请参见 下载备份文件和日志。
对于使用 Windows 云服务器的开发者,暂时不能直接获取慢查询日志。如果有需要,请 提交工单 联系我们获取慢查询日志文件。
云数据库的 binlog 保存时间说明
云数据库 MySQL binlog 日志文件可以保留7天 - 1830天,默认为7天(单击实例 ID 进入备份恢复 > 自动备份设置里可配置保留时间)。
binlog 保留时间过长或增长太快,都会导致备份空间变大,一旦备份空间超出系统的赠送空间,将会产生额外的备份空间费用。
字符集说明
说明:
从官方 MySQL 8.0.29版本开始,原有 UTF8 编码格式变为 UTF8MB4。
云数据库 MySQL 5.7版本默认字符集编码格式是 UTF8。
云数据库 MySQL 8.0版本默认字符集编码格式分如下两种情形:
情形一:官方 MySQL 8.0.29以下版本实例的默认字符集编码格式为 UTF8。
情形二:官方 MySQL 8.0.29及以上版本实例的默认字符集编码格式为 UTF8MB4。详细变更说明请参见 MySQL 官网文档。
虽然云数据库支持默认字符集编码的设置,但建议您在创建表时,显式的指定表的编码,并在连接建立时指定连接的编码。这样您的应用将会有更好的移植性。
关于 MySQL 字符集的相关资源请参见 MySQL 官方文档。
您可以通过 SQL 语言或 MySQL 控制台修改字符集。
通过 SQL 语言修改字符集
1. 通过 SQL 语言执行如下语句可修改云数据库实例的默认字符集编码:
SET @@global.character_set_client = utf8;SET @@global.character_set_results = utf8;SET @@global.character_set_connection = utf8;SET @@global.character_set_server = utf8;
执行语句后,其中 @@global.character_set_server 等10分钟左右将自动同步到本机文件进行持久化(另外3个变量不会同步到本机文件),迁移或重启将保持设置后的值。
2. 执行如下语句可修改当前连接的字符集编码:
SET @@session.character_set_client = utf8;SET @@session.character_set_results = utf8;SET @@session.character_set_connection = utf8;
或者
SET names utf8;
3. 对于 PHP 程序,可通过如下函数设置当前连接的字符集编码:
bool mysqli::set_charset(string charset);
或者
bool mysqli_set_charset(mysqli link, string charset);
4. 对于 Java 程序,可通过如下方式设置当前连接的字符集编码:
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8
通过 MySQL 控制台修改字符集
1. 登录 MySQL 控制台,在实例列表,单击实例 ID,进入实例详情页。
2. 在实例信息里找到字符集/排序规则,单击修改图标。

3. 在弹出的对话框,修改字符集/排序规则,单击确定。

操作限制
1. 请不要修改 MySQL 实例已有账号的信息和权限,这个操作可能会令部分集群服务失效。
2. 创建库和表时建议统一使用 InnoDB 引擎,这个选择能使实例在支持高访问的能力上有更好的表现。
3. 请不要修改、停止主备关系,这个操作可能会令热备失效。
数据库表名的限制
不支持以中文作为表名,请在创建表时注意。中文表名可能会导致回档、升级等流程失败。
数据库账户权限
云数据库 MySQL 不对用户提供实例 super user 权限,用户可以修改的参数以实际控制台为准,可以通过 MySQL 控制台 找到目标实例,单击实例 ID,进入数据库管理 > 参数设置页,查看可修改的参数范围。