在谷歌云部署之后,我的应用程序的延迟非常大,超过5秒。在搜索问题之后,发现MySQL数据库上的查询是问题,并且需要很长时间才能执行。
以下是来自不同服务器上的同一数据库的一些示例。这些命令直接在sql server上通过ssh发出:
select * from tbl1;
local - 54343 rows in set (0.14 sec)
shared hosting - 54343 rows in set (0.89 sec)
google - 54343 rows in set (26.73 sec)
select * from tbl2;
local - 132 rows in set (0.00 sec)
shared hosting - 132 rows in set (0.01 sec)
google - 132 rows in set (0.20 sec)
select * from tbl3 inner join tbl4 ON tbl4.tbl3_id = tbl3.id;
local - 746 rows in set (0.00 sec)
shared hosting - 746 rows in set (0.12 sec)
google - 746 rows in set (0.95 sec)
我正在使用D1,但也试过D32等级,但没有得到更好的结果。我正在使用默认设置(标志等)。您认为这会导致什么问题?我也尝试过异步文件系统repc。,关闭一些日志标记。
答案 0 :(得分:0)
鉴于您的本地查询时间非常短,即使是非常大量的行,我怀疑查询缓存可能在这里发挥作用。
使用SQL_NO_CACHE尝试本地和远程查询,如下所示:
从tbl3内部联接选择sql_no_cache * tbl4 ON tbl4.tbl3_id = tbl3.id;
如果这样可以平衡时间,则可能无法在Google服务器上配置查询缓存。启用它可能会给你一个良好的开端,但是,如果你经常需要多秒查询,你可能需要考虑优化它们。