MySQL驱动程序配置可以增加CloudSQL的吞吐量

时间:2018-01-20 11:21:05

标签: mysql jdbc odbc google-cloud-sql

我试图从ETL软件包中增加插入CloudSQL(MySQL on Google)的吞吐量。可以使用ODBC或JDBC驱动程序建立连接。

对于内部部署db的正常吞吐量是5-10k插入行/秒,但对于CloudSQL看起来是< 100.问题似乎是调用的延迟,处理单个插入。

我查看了MYSQL驱动程序文档,还有multi_statementauto_commit等选项,提示每次调用允许多个语句并提高吞吐量。

是否有关于使用ODBC或JDBC的指南,特别是在从内部部署到云时?

1 个答案:

答案 0 :(得分:0)

要提高吞吐量,首先应确定瓶颈是什么。以下是一些可能性:

  • <强>延迟结合即可。当大部分时间花在等待从客户端到服务器的数据上时就是这种情况。这可能是因为a)您的客户端到服务器的往返时间很长和/或b)您的客户端连续进行了大量的小写操作。

    通过比较ping与Cloud SQL和您以前的服务器的结果来测试往返时间(对于Cloud SQL 1st Gen,使用SELECT 1;的速度,因为ping已在Google中终止,然后才到达真正的服务器。)通过查看它的代码或MySQL查询日志,确定您的客户端是否进行了大量的小写操作。

  • <强>带宽结合即可。如果您的客户端和服务器之间的带宽链接很小,就属于这种情况。

    通过进行速度测试来测试,并查看可用速度是否低于您希望的有效数据速率。

  • 服务器io-bound 。当您配置了具有低层或小磁盘的Cloud SQL实例(第二代)时就是这种情况。

    通过查看Stackdriver Monitoring中的Cloud SQL实例的指标来测试。

  • 客户端io-bound 。当您的客户端无法足够快地发送数据时就是这种情况。如果您使用与本地测试相同的源,则不太可能。

    使用iostat查看历史磁盘使用情况或hdparm -t测试磁盘吞吐量来测试此情况。

  • 过度索引。每个附加索引使写入速度变慢。确保您在Cloud SQL和本地使用相同的架构进行公平测试。