复制是否有助于稳定数据库读取服务?

问题描述

我不得不重新定义问题的描述。

我有基于Postgresql云的数据库,每天发出150万个请求。我使用提取的数据的不同变体检查了各个查询本身的统计信息。通常,单个查询似乎还可以(它们确实很简单,不太可能延迟)。在应用程序运行时会发生此问题。该应用程序是一个互联网游戏。在一个游戏过程中,新记录(具有游戏的当前状态)将不断写入数据库。这时有很多插入物。用户可能希望随时(在进行此类插入时)查看游戏的历史记录。此时,当写入服务将新记录添加数据库中时,读取服务将读取数据。与书写相比,这种阅读非常少见,发生比例为1:100(但将来这种阅读会更频繁)。服务ugh-read通常在0-6秒内读取数据。有时读取时间会增加到40甚至100秒以上。罕见的跳跃(如10-20秒)是可以接受的,但我绝对需要摆脱40秒以上的跳跃。 对于这个特定问题,我考虑复制MASTER-SLAVE(write_only-read_only)

其他信息:评论员询问:

  • 云服务:gcp
  • 服务限制:限制: 内存:1500Mi cpu:500m
  • Postgres版本:10

如果可以的话,我可以介绍查询和表的结构。一切都写在春天。

解决方法

简单来说,您必须找到并消除瓶颈。

一些指针:

  • 查看操作系统,查看I / O系统和CPU的运行情况。

  • 减少并发数据库连接的数量,也许使用连接池。

  • 使用pg_stat_statements查找导致最大负载的语句。