谷歌云SQL速度缓慢

31

我有一个D0规格的Cloud SQL实例。当我运行一个简单的

select * from table

这个数据库表大约有500行数据,平均需要100毫秒的时间来执行查询(由SQL Prompt报告)。然而,在我本地的MySQL 5.5实例中,只需要1毫秒的时间。我的开发机器是2.9GHz双核Intel Core i7和8GB 1600MHz内存。我在一个FAQ中读到,数据库性能取决于其规模 - 更大的实例有更多的RAM和CPU。

是否可以合理地期望通过提高实例大小来解决性能问题?或者我还有其他遗漏的问题吗?


2
这是一项云服务。你必须允许网络延迟。即使宇宙中速度最快的数据库,在引导它的管道只是几个听装罐头和一根绳子,人们在里面大喊1和0,它仍然会很慢。 - Marc B
2
将其扩展到1000、10000行并检查是否呈线性扩展。如果是,那么你有一个问题。但我认为不会,因为存在恒定的开销(网络延迟)。 - mnagel
3
我认为,SQL Prompt 报告的是实际查询执行时间,而不包括 SQL 查询和网络延迟。加上延迟后,大约是 400 毫秒,这是由 Chrome Dev Tools 报告的。 - andriys
我有一个视图,它对4个表进行了union操作。在本地,执行select * from view的时间为10毫秒,在Cloud SQL上为600毫秒,加上延迟后达到1秒钟。 - andriys
@mnagel,我已经将它扩展到10000行了。与SQL Prompt报告的相同,执行时间为100毫秒。 - andriys
在2021年,它仍然非常慢! - WebDev-SysAdmin
5个回答

13

6
这真是可耻的。 - Robert Moskal
6
截至2020年3月,情况并没有变得更好。令人震惊的是,我们必须迁回AWS RDS。 - David Dehghan
2020年11月:糟糕透了。正在尝试Kamatera。接下来是AWS。真是太遗憾了... - Vincent
3
好的,让我们停止发送关于日期的评论,因为似乎永远无法修复,我的意思是,现在是2022年,SELECT 123;需要478毫秒(postgresql)。 - Top-Master

6

编辑:2016年4月10日

现在GAE提供了第二代云mysql,即使是像“db-g1-small”这样的基本级别也可以像旧的Cloud SQL提供的D8级别一样快速运行。而且价格也便宜得多。这似乎是一个重要的里程碑,不再需要使用hack和解决方法。

您可以参考Cloud SQL的定价,但最低费用大约为每月20美元。

原始文章

Google只为D0层配置慢速服务器,您可以选择D4,但内存并不是主要问题,处理器才是主要问题(他们没有提到GHz)。

网络延迟不是问题。例如,下面的0.05秒是仅在服务器上执行查询所需的时间。之后的任何时间都可能花费在数据传输中。

mysql> select * from tracking limit 5;
+--------------------------------+-----------+-----------+
| id                             | scan_date | status    |
+--------------------------------+-----------+-----------+
| 420006929400111899561510697350 | NULL      | Delivered |
| 420010859400111899561989496058 | NULL      | Delivered |
| 420019849400111899561989496331 | NULL      | Delivered |
| 420100109400111899561903290311 | NULL      | Delivered |
| 420100319400111899561944407020 | NULL      | Delivered |
+--------------------------------+-----------+-----------+
5 rows in set (0.05 sec)

编辑:2016年3月

对于一些应用程序,我不再使用Cloud SQL,而是使用远程托管的基本MySql集群,因为GAE打开了出站套接字连接。听起来很疯狂?但从数字上看,通过此套接字连接发送查询并获取数据比同地D3更快。


6

性能不佳的原因是视图。Google运行自己优化过的MySQL引擎,这种优化可能会损害视图。如果您有许多连接或/和联合,请预计视图运行缓慢。

然而,自从我发表了这个问题已经快一年了,情况可能已经改变了。自从我们停止使用视图以来,我还没有重新审视过它们。


事情似乎没有改变。平均响应时间为200毫秒,虽然不算太快,但也不错。 - George Chalhoub

3
我们也遇到了同样的问题。 使用D16实例,一个简单的网站论坛页面需要>10秒才能加载完毕。 我刚刚和一位GoogleCloud技术支持工程师交谈,他确认CloudSQL目前(截至2015年夏季)并不真正准备好应对“性能”方面的问题,他建议重写所有内容以使用DataStore…… 因此,如果您有许多小型SQL查询的页面,并且数据集太大而无法全部适合缓存中,则CloudSQL现在不是可行的解决方案。

1
这让人感到震惊,我们已经开发了几个月的整个系统来使用CloudSQL。为什么你说从夏天开始..它有更好的性能还是自那时以来开始落后于其他供应商?Datastore根本不符合我们的需求。你有任何建议吗? - cfl
1
我也来自云平台支持团队,这个特定案例似乎是一个特定用例的建议,而不是一个笼统的全局声明,即“Datatsore > Cloud SQL”。 - Nick
1
你真的需要在每个页面加载时进行数十次调用吗?无论如何,这似乎都不是一个理想的方案。 - bwawok
2
@cfl 你可以将其替换为使用另一个托管的MySQL服务,例如RDS。 - Joe Mornin

3
  1. 你是从哪里连接到你的Cloud SQL实例的?
  2. 层级大小将对性能产生很大影响。你可以暂时更改实例的层级进行测试。

  1. 我正在浏览器中使用 SQL Prompt 进行连接 https://developers.google.com/cloud-sql/docs/sql_prompt。
  2. 我将尝试更改层大小并发布结果。
- andriys
6
我更换了D32实例(最大的那个),查询一张只有两条记录的表需要30毫秒,查询一张有500条记录的表需要75毫秒。我认为这是不合理的。亚马逊RDS执行所有这些操作的时间都不到1毫秒。你有什么想法,可能是什么原因导致这种情况? - andriys
我也遇到了同样的问题。我运行了一个形如“select * from <table>”的查询,只有1行,而由sql提示测量得出的查询时间为200毫秒。 - Sathya
延迟问题依旧存在...简单的语句需要1秒钟,而在本地(到GCE中的VM)只需要0.01秒钟...延迟少了100倍... - aholbreich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接