并发读取如何影响Postgres?

时间:2017-10-20 17:38:36

标签: postgresql

我正在设计一个基于Postgres的应用程序来处理许多用户的大数据。对数据进行建模,以便大多数读取仅使用三个表,这意味着所有用户同时查看相同的记录。

关于读取(不是写入) - 许多并发读取会降低数据库速度,或者一旦在内存中,Postgres会向所有并发用户显示相同的视图而没有太多延迟或资源消耗吗?

是否存在同一记录的读取次数减慢Postgres的一个点,或者,一旦在内存中,显示数据的成本不会增加?

感谢,

Alex Glaros

1 个答案:

答案 0 :(得分:4)

  

做多个并发读取缓慢db down,或者一旦在内存中,Postgres会向所有并发用户显示相同的视图而没有太多延迟或资源消耗?

如果一遍又一遍地请求相同的数据,那么是的,它将被保存在内存中(前提是Postgres有足够的可用内存来执行此操作)。

  

是否存在相同记录的读取次数缓慢下降的点

没有什么是免费的,所以当并发事务同时在完全请求相同数据时,会产生开销。需要通过锁(尽管非常轻量级),锁存器和信号量来同步对内存中数据块的访问。

在完整数据在内存中的系统中,CPU确实获得了限制因素。最近的Postgres版本在具有多个并发会话的可伸缩性方面有了很大改进,因此请确保使用最新版本(9.6或甚至10.0)。

这指的是在完全相同纳秒的情况下请求相同数据块的多个事务。如果事务(会话,连接)通常请求这三个表的不同部分,您将看到由于仅在非常非常繁重的负载下同步内存块而导致的问题。