使用限制

最近更新时间:2019-08-26 11:39:08

限制说明

数据量限制

由于资源的有限性,为了隔离用户间性能影响,云数据库 MySQL 对各种类型的 MySQL 实例做了数据量限制。下面从技术角度介绍 MySQL 在大数据量下的单个实例以及单个表使用的影响:

大数据量表:单表数据量过大后,MySQL 对单表资源的管理成本(数据、索引等)变更,将直接影响表的处理效率。例如,当一个业务表(InnoDB)数据量达到了5GB后,更新操作延迟明显增大,直接影响了业务的响应时间,后来不得不通过迁移分表来缓解这个问题。

大数据量实例:云数据库默认存储引擎是 InnoDB,当实例中的数据及索引页都能被 InnoDB 的 cache、buffer 缓存住时,MySQL 实例能够支持很大的并发访问。如果实例数据量过大,会导致 cache buffer 频繁的数据换出换进,MySQL 瓶颈很快转到 IO 上,访问吞吐量直趋下降(例如,某云数据库实例本可以支持8000次访问,当数据量为 cache、 buffer 大小的两倍时,仅能支持700次每秒左右的访问)。

说明:

单个实例的表数量超过100万后,可能会造成备份、监控、升级失败,同时也会影响数据库监控,请合理规范表的数量,控制单个实例表数量不超过100万。

连接数限制

MySQL 的连接数上限为 MySQL 的系统变量 max_connections,当 MySQL 实例连接数量超过 max_connections 时,新的连接将无法建立。
云数据库大型默认值为3000,其它规格为800。用户可以根据需要自行调整 max_connections 的值。但连接数越多,消耗系统资源也越多。如果连接数超过实际系统的负载承受能力范围,必然影响系统服务质量。
关于 max_connections 请参见 MySQL 官方文档

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

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

关于慢查询的说明

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

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

云数据库 MySQL binlog 日志文件可以保留7天 - 732天,默认为7天(在自动备份设置里可以配置天数)。日志备份天数必须小于等于数据备份天数。
binlog 保留时间过长或增长太快,都会导致备份空间变大,一旦备份空间超出系统的赠送空间,将会产生额外的备份空间费用。(目前超出的备份空间仍然免费,收费时间和收费方式后续另行通知)

字符集说明

云数据库与 MySQL 数据库一样,默认字符集编码格式是:latin1,即 ISO-8859-1 编码格式。
虽然云数据库支持默认字符集编码的设置,但建议您在创建表时,显式的指定表的编码,并在连接建立时指定连接的编码。这样您的应用将会有更好的移植性。
关于 MySQL 字符集的相关资源请参见 MySQL 官方手册。

下面是修改云数据库字符集的方法:

  1. 执行如下语句可修改云数据库实例的默认字符集编码:
    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

操作限制

  1. 请不要修改 MySQL 实例已有帐号的信息和权限,这个操作可能会令部分集群服务失效。
  2. 创建库和表时建议统一使用 InnoDB 引擎,这个选择能使实例在支持高访问的能力上有更好的表现。
  3. 请不要修改、停止 master-slave 关系,这个操作可能会令热备失效。

数据库表名的限制

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

注意事项

数据库帐户权限

云数据库 MySQL 不再向用户提供实例 super user 权限,需要 super user 权限才能修改的参数可通过控制台参数配置功能和提交工单两种方式修改,小部分参数无法修改。

数据库引擎

出于性能和安全性考虑建议尽量采用 InnoDB 存储引擎,MySQL 5.6 以上版本不再支持 MyISAM 引擎。

网络选择

  • 私有网络和基础网络的对比请参见 私有网络介绍
  • 私有网络与基础网络不能互通,只能访问各自网络中的实例。