关于读取(不是写入) - 许多并发读取会降低数据库速度,或者一旦在内存中,Postgres会向所有并发用户显示相同的视图而没有太多延迟或资源消耗吗?
是否存在同一记录的读取次数减慢Postgres的一个点,或者,一旦在内存中,显示数据的成本不会增加?
感谢,
Alex Glaros
答案 0 :(得分:4)
做多个并发读取缓慢db down,或者一旦在内存中,Postgres会向所有并发用户显示相同的视图而没有太多延迟或资源消耗?
如果一遍又一遍地请求相同的数据,那么是的,它将被保存在内存中(前提是Postgres有足够的可用内存来执行此操作)。
是否存在相同记录的读取次数缓慢下降的点
没有什么是免费的,所以当并发事务同时在完全请求相同数据时,会产生开销。需要通过锁(尽管非常轻量级),锁存器和信号量来同步对内存中数据块的访问。
在完整数据在内存中的系统中,CPU确实获得了限制因素。最近的Postgres版本在具有多个并发会话的可伸缩性方面有了很大改进,因此请确保使用最新版本(9.6或甚至10.0)。
这指的是在完全相同纳秒的情况下请求相同数据块的多个事务。如果事务(会话,连接)通常请求这三个表的不同部分,您将看到由于仅在非常非常繁重的负载下同步内存块而导致的问题。