复制是否有助于稳定数据库读取服务?
Will replication help stabilize the database reading service?
我不得不重新定义问题的描述。
我有基于云的 PostgreSQL 数据库,每天发出 150 万个请求。我使用提取数据的不同变体检查了各个查询本身的统计信息。总的来说,个别查询好像还可以(真的很简单,不太可能延迟)。应用程序 运行 时出现问题。该应用程序是一个网络游戏。在一个游戏会话期间,新记录(以及游戏的当前状态)不断被写入数据库。很多插页都是在这个时候制作的。用户可能希望随时查看游戏历史(当此类插入正在进行时)。此时,当写入服务向数据库中添加新记录时,读取服务读取数据。这样的读取相对于写入是非常少见的,出现的比例是1:100(不过以后这样的读取会更频繁)。服务 ugh-read 通常在 0-6 秒内读取数据。有时阅读时间会增加到 40 多秒甚至 100 秒。像 10-20 秒这样的罕见跳跃是可以接受的,但我绝对需要摆脱超过 40 秒的跳跃。
对于这个特殊问题,我考虑复制 MASTER-SLAVE (write_only-read_only)
附加信息:评论员询问:
- 云服务:gcp
- 服务限制:限制:
内存:1500Mi
cpu: 500 米
- Postgres 版本:10
如果可以的话,我可以介绍一下查询和表的结构。一切都写在spring.
简单来说,就是要找到并解决瓶颈。
一些提示:
看看操作系统,看看I/O系统和CPU系统怎么样
减少并发数据库连接数,可能使用连接池。
使用 pg_stat_statements
查找导致最多负载的语句。
我不得不重新定义问题的描述。
我有基于云的 PostgreSQL 数据库,每天发出 150 万个请求。我使用提取数据的不同变体检查了各个查询本身的统计信息。总的来说,个别查询好像还可以(真的很简单,不太可能延迟)。应用程序 运行 时出现问题。该应用程序是一个网络游戏。在一个游戏会话期间,新记录(以及游戏的当前状态)不断被写入数据库。很多插页都是在这个时候制作的。用户可能希望随时查看游戏历史(当此类插入正在进行时)。此时,当写入服务向数据库中添加新记录时,读取服务读取数据。这样的读取相对于写入是非常少见的,出现的比例是1:100(不过以后这样的读取会更频繁)。服务 ugh-read 通常在 0-6 秒内读取数据。有时阅读时间会增加到 40 多秒甚至 100 秒。像 10-20 秒这样的罕见跳跃是可以接受的,但我绝对需要摆脱超过 40 秒的跳跃。 对于这个特殊问题,我考虑复制 MASTER-SLAVE (write_only-read_only)
附加信息:评论员询问:
- 云服务:gcp
- 服务限制:限制: 内存:1500Mi cpu: 500 米
- Postgres 版本:10
如果可以的话,我可以介绍一下查询和表的结构。一切都写在spring.
简单来说,就是要找到并解决瓶颈。
一些提示:
看看操作系统,看看I/O系统和CPU系统怎么样
减少并发数据库连接数,可能使用连接池。
使用
pg_stat_statements
查找导致最多负载的语句。