有奖捉虫:云通信与企业服务文档专题,速来> HOT

数据量限制

由于资源的有限性,为了隔离用户间性能影响,云数据库 MySQL 对各种类型的 MySQL 实例做了数据量限制。下面从技术角度介绍 MySQL 在大数据量下的单个实例以及单个表使用的影响:
大数据量实例:云数据库默认存储引擎是 InnoDB,当实例中的数据及索引页均能被 InnoDB 的 cache、buffer 所缓存住时,MySQL 实例能够支持很大的并发访问。如果实例数据量过大,会导致 cache、buffer 频繁的数据换出换进,MySQL 瓶颈很快转到 IO 上,访问吞吐量直趋下降(例如,某云数据库实例本可以支持8000次每秒访问,当数据量为 cache、buffer 大小的两倍时,仅能支持700次每秒左右的访问)。
大数据量表:单表数据量过大后,MySQL 对单表资源的管理成本(数据、索引等)变更,将直接影响表的处理效率。例如,当一个业务表(InnoDB)数据量达到了10GB后,更新操作延迟明显增大,直接影响了业务的响应时间,后来不得不通过迁移分表来缓解这个问题。
说明:
单个实例的表数量超过100万后,可能会造成备份、监控、升级失败,同时也会影响数据库监控,请合理规范表的数量,控制单个实例表数量不超过100万。

连接数限制

MySQL 的连接数上限为 MySQL 的系统变量 max_connections,当 MySQL 实例连接数量超过 max_connections 时,新的连接将无法建立。 云数据库默认连接数可在 MySQL 控制台 单击实例 ID,进入数据库管理 > 参数设置页查看。用户可以根据需要自行调整 max_connections 的值。但连接数越多,消耗系统资源也越多。如果连接数超过实际系统的负载承受能力范围,必然影响系统服务质量。 关于 max_connections 请参见 MySQL 官方文档

连接云数据库的 MySQL 客户端的限制

建议使用 CVM 系统自带的 MySQL 客户端和 lib 库,连接云数据库实例。

关于慢查询的说明

对于使用 Linux 云服务器的开发者,可以通过云数据库导出工具获取慢查询日志,请参见 下载备份文件和日志
对于使用 Windows 云服务器的开发者,暂时不能直接获取慢查询日志。如果有需要,请 提交工单 联系我们获取慢查询日志文件。

云数据库的 binlog 保存时间说明

云数据库 MySQL binlog 日志文件可以保留7天 - 1830天,默认为7天(单击实例 ID 进入备份恢复 > 自动备份设置里可配置保留时间)。 binlog 保留时间过长或增长太快,都会导致备份空间变大,一旦备份空间超出系统的赠送空间,将会产生额外的备份空间费用。

字符集说明

说明:
从官方 MySQL 8.0.29版本开始,原有 UTF8 编码格式变为 UFT8MB4。
云数据库 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. 请不要修改、停止 master-slave 关系,这个操作可能会令热备失效。

数据库表名的限制

不支持以中文作为表名,请在创建表时注意。中文表名可能会导致回档、升级等流程失败。

数据库账户权限

云数据库 MySQL 不对用户提供实例 super user 权限,用户可以修改的参数以实际控制台为准,可以通过 MySQL 控制台 找到目标实例,单击实例 ID,进入数据库管理 > 参数设置页,查看可修改的参数范围。

网络选择

推荐您使用私有网络,在私有网络内,用户可以自由定义网段划分、IP 地址和路由策略。与基础网络相比,私有网络更适合有网络自定义配置需求的场景。私有网络和基础网络的对比请参见 管理网络