我们根据Google Cloud SQL指令转储了我们的表格,并将其导入第二代Google Cloud SQL实例.
我们很高兴看到我们的数据如何在“谷歌硬件”上运行.
在使用Apache ab对我们的Rails应用程序进行压力测试并看到完成时间高出150ms之后,我们注意到ActiveRecord在相同页面中的生产服务器(裸机)比30ms到50ms更多.
虽然我们挖得更深,但真正让我们大吃一惊的是这样的简单计数查询:
GOOGLE CLOUD SQL - db-n1-standard-4 (4vcpu and 15GB RAM)
1. Cold query
mysql> SELECT COUNT(*) FROM `event_log`;
+----------+
| COUNT(*) |
+----------+
| 3998050 |
+----------+
1 row in set (19.26 sec)
2. Repeat query
mysql> SELECT COUNT(*) FROM `event_log`;
+----------+
| COUNT(*) |
+----------+
| 3998050 |
+----------+
1 row in set (1.16 sec)
SELECT @@innodb_buffer_pool_size/1024/1024/1024;
+------------------------------------------+
| @@innodb_buffer_pool_size/1024/1024/1024 |
+------------------------------------------+
| 10.500000000000 |
+------------------------------------------+
1 row in set (0.00 sec)
然后,我可以多次重复查询,性能相同.
使用完全相同的转储在我的macbook pro 2017中运行相同的查询:
MACBOOK PRO 2017
1. Cold query
mysql> SELECT COUNT(*) FROM `event_log`;
+----------+
| COUNT(*) |
+----------+
| 3998050 |
+----------+
1 row in set (1.51 sec)
2. Repeat query
mysql> SELECT COUNT(*) FROM `event_log`;
+----------+
| COUNT(*) |
+----------+
| 3998050 |
+----------+
1 row in set (0,51 sec)
SELECT @@innodb_buffer_pool_size/1024/1024/1024;
+------------------------------------------+
| @@innodb_buffer_pool_size/1024/1024/1024 |
+------------------------------------------+
| 0.125000000000 |
+------------------------------------------+
1 row in set (0,03 sec)
让你更加荒谬的是,正如你在上面看到的那样,我没有从我的默认mysql安装中调整任何东西,所以它在我的Macbook中只使用了125MB的RAM,而Google Cloud实例有10GB的RAM可用.
我们尝试将Google Cloud SQL实例大小增加到db-n1-highmen-8(8vCPU,52GB ram!),以不提高性能(如果我们从db-n1-standard-4减少,我们确实看到性能下降).
最后但并非最不重要的是,使用this question,我们可以确认我们的数据库只有46GB,但在导入期间,谷歌云sql中的存储使用量持续增长,直到达到荒谬的74GB ……我们不知道这是否是因为二进制日志记录(默认情况下在谷歌云SQL上打开,在本地计算机上关闭).
那么..是不是有人在生产中使用Google Cloud sql?
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!