GCLOUD SQL性能改进



我在谷歌云SQL上有以下配置。我的查询速度不够快。它比我在本地机器上运行要慢得多。

我们使用InnoDB引擎。我们有超过5万条记录的用户表。如果我们做简单的更新查询来更新单行。

UPDATE User SET notificationToken="string token" WHERE id = "String ID";

这里id列是varchar,我们有assign索引主键+唯一键。并且上述查询花费了1+秒来更新记录。同样的查询,如果我在本地机器上尝试,它会超时0.0200ms。在云sql中,写操作似乎太慢了。

有关于以下配置或需要为InnoDB配置DB标志的指导吗?

云SQL配置:

机器类型:

  • db-n1-标准-2
  • vCPUs:2
  • 内存:7.5 GB

网络吞吐量(MB/s(:2000的500存储类型:SSD存储容量:10GB

磁盘吞吐量:

  • 阅读:4.8最大:240.0
  • 写入:4.8最大值:144.0

IOPS:

  • 阅读:300最大:15000
  • 写入:300 MAX:9000

DB标志:

  • slow_query_log='on'
  • long_query_time='1'
  • query_cache_size='223338299392'
  • query_cache_limit='223338299392'
  • stored_program_cache=5524288
  • sql_mode="ERROR_FOR_DIVISION_BY_ZERO">
  • log_bin_trust_function_creators="打开">
  • innodb_write_io_threads=20
  • innodb_read_io_threads='8'

一般来说,性能调优的建议很难给出,因为需要考虑很多事情。(其中一些只有你自己知道(。但你可以考虑以下几点:

  • 删除索引

如果不使用索引,这是个好主意。但是,如果放弃它们会使其他并行工作负载切换到顺序扫描,这是一个非常糟糕的主意。

删除索引将影响对现有数据的查询。此外,指数的重新制定在未来也需要时间。

  • 增加内存或更改为更大的机器类型

此选项可能有帮助,也可能没有帮助-如果它提高了无限制的网络和磁盘速度,它肯定会有所帮助。

若要诊断查询性能,建议启用查询日志记录。云SQL日志(像所有谷歌云服务一样(被发送到Stackdriver日志记录,并可以通过API检索。要在Cloud SQL中启用数据库日志记录,请执行以下步骤。例如,在其云SQL实例上启用慢速查询日志记录(将slow_query_log标志设置为"On"(和启用Stackdriver日志记录(设置log_output标志为"FILE"(。

您还可以启用性能模式数据库标志。可以通过API为较大的实例(db-n1-standard-8、db-n1-highmem-4和更大的实例(启用performance_schema标志。

performance_schema标志和其他数据库标志一样,可以在settings.databaseFlags数组(ref(中设置。下面是一个关于如何使用curl在现有实例上设置它的示例。

curl --header "Authorization: Bearer $(gcloud auth print-access-token)" 
--header "Content-Type: application/json" 
--data '{
"settings": {
"databaseFlags": [
{
"name": "performance_schema",
"value": "on"
}
]
}
}' -X PATCH https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_NAME]/instances/myinstance

相关内容

  • 没有找到相关文章

最新更新