如何更改Google SQL Cloud上的innodb_lru_scan_depth值?

时间:2017-01-16 11:19:48

标签: mysql google-cloud-sql

在我们的一个实例中,我们遇到了这种错误:

2017-01-11T11:12:48.513497Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 5745ms. The settings might not be optimal. (flushed=614 and evicted=0, during the time.)

每次在日志中弹出错误时,错误都会开始大量相同的错误,并且由于偶然的其他事件导致实例长时间没有响应。

现在,社群支持委员会提出的建议之一就是将innodb_lru_scan_depth的设置从默认的1024更改为256.

我检查了mysql实例标志但看不到它所以我尝试直接访问该实例并运行它:

SET GLOBAL innodb_lru_scan_depth=256;

不幸的是,如果没有SUPER权限,我们就无法更改这些设置。

ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation

那我该怎么改变那个值呢?还有其他我不知道的方式吗?

此外,我知道更改该设置并不是真正的"解决方案"因为这意味着我们运行的查询对于硬件来说太重了。原因是这些查询每月运行一次,并且仅为此升级实例的硬件并不值得。

3 个答案:

答案 0 :(得分:0)

必须在以下超级特权下完成:

SET GLOBAL innodb_lru_scan_depth=256;

基本上,必须在服务器未处于活动模式时完成。

答案 1 :(得分:0)

基本上,我们无法设置innodb_lru_scan_depth之类的全局变量

CloudSQL不接受,因为您的root帐户不是真正的根。

我们仅对基于https://cloud.google.com/sql/docs/mysql/flags的变量(标志)列表具有权限

答案 2 :(得分:0)

这些可以通过CloudSQL UI设置:

enter image description here