在谷歌云上部署后,我的应用程序有非常大的延迟,超过 5 秒。搜索问题后,发现问题出在对 MySQL 数据库的查询上,并且执行时间非常长。
以下是在不同服务器上比较来自同一数据库的一些示例。这些命令是通过 ssh 直接在 sql server 上发出的:
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.,关闭一些日志记录标志。
最佳答案
鉴于您的本地查询时间非常短,即使对于非常多的行,我怀疑查询缓存可能在这里发挥作用。
像这样使用 SQL_NO_CACHE 在本地和远程尝试查询:
select sql_no_cache * from tbl3 inner join tbl4 ON tbl4.tbl3_id = tbl3.id;
如果这样可以平衡时间,则可能是 Google 服务器上未配置查询缓存。启用它现在可能会给您一个良好的开端,但是,如果您的查询经常花费几秒钟的时间,您可能需要考虑优化它们。
关于mysql - 谷歌云 : MySQL queries very slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29871718/