在Google Cloud SQL上更改innodb_io_capacity

时间:2019-06-05 09:05:20

标签: mysql google-cloud-platform google-cloud-sql

我们的服务使用db-n1-standard-32实例。 IOPS限制为读取40,000,写入30,000。 但是我们的服务似乎限制在5000左右。 参见screenshot

我认为它来自MySQL的innodb_io_capacity

mysql> show variables like '%capacity%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| innodb_io_capacity     | 5000  |
| innodb_io_capacity_max | 10000 |
+------------------------+-------+
2 rows in set (0.02 sec)

我可以更改值吗?

3 个答案:

答案 0 :(得分:1)

目前尚未在list中公开。如果要将其设置为用户可更改标志,则应提交feature request。 Cloud SQL是一项托管服务,大多数标志不会向用户公开,以确保服务的完整性和可用性,例如如果未正确使用某些标志,可能会导致停机以及某些意外行为。

MySQL Flags

答案 1 :(得分:0)

我正在为Google Cloud Platform工作。为了进一步调查此问题,我认为最好检查您的项目和特定的Cloud SQL MySQL实例。

我建议您通过提供项目编号和Cloud SQL实例ID来打开一个私人发行。请使用以下组件:

https://issuetracker.google.com/issues/new?component=187202

创建完成后,请告诉我,我将尽快开始进行处理。同时,请向我提供以下信息:

  1. 您是否因为生产负荷而注意到此限制?
  2. 您是否执行任何性能测试以导致发现此限制?
  3. 您鼓励任何具体的问题吗?

如上所述,请向我提供信息,并在创建私人问题后通知我,以便我尽快开始进行研究。

答案 2 :(得分:0)

IOPS不受“ innodb_io_capacity”值的限制。

正如Christopher所说,不可能更改该值,并且有充分的理由,因为它不仅不能显着提高性能,而且还会导致其他问题,例如每次事务处理延迟变得更加可变,从而影响许多工作负载

我们已经进行了广泛的测试,以确定this和其他MySQL标志的值。提高此限制不会提高性能,这表明在达到IOPS的读取和写入限制级别之前,还存在其他瓶颈。

InnoDB使用的是doublewrite缓冲区,该缓冲区具有硬编码的限制,无法扩展到这些级别。这用于防止某些类型的故障后数据损坏。我们希望能够禁用此功能,如果默认情况下MySQL使用的16KB块大小的写操作是原子的,则应该可以禁用此功能,尽管我们不能保证一定会将其作为Cloud SQL的一部分使用。当前,客户可以在Compute Engine实例中管理MySQL,以利用this BETA feature的优势。