我在两种不同的设置中测量时空查询的响应时间。
a)我有一个实例,我已经安装了带有postGIS扩展名的PostgreSQL
b)我有5个实例(1个主服务器,3个服务器,1个pgpool II客户端) - pgpool II复制。
我的查询是:
if let k = (k.base as? WeekDay), k == .mon {
print("got it: \(k)")
}
在结果中我看到a)设置中的响应时间小于b)。
设置 - >响应时间:45,3456秒
b设置 - >响应时间:28,4658秒
在我进行实验之前,我认为在pgpool II复制(b设置)的情况下,响应时间将比在a中更大,原因是数据在节点之间被复制以获得可用性和容错性以及pgpool II会选择节点来发送查询,这会产生开销。对于单个节点,情况更简单,所以我认为响应时间会更好(设置)。
任何人都可以解释这种行为吗?或者知道为什么会这样?
答案 0 :(得分:1)
我相信这是预期的行为。根据{{3}},pgpool-II的并行查询功能允许将查询拆分到不同的服务器中:
加载余额
如果复制数据库(因为在任一复制模式下运行) 或主/从模式),在任何服务器上执行SELECT查询 返回相同的结果。 pgpool-II利用了复制功能 功能,以减少每个PostgreSQL服务器上的负载。确实如此 通过在可用服务器之间分配SELECT查询,改进 系统的整体吞吐量。在理想情况下,请阅读 性能可以与PostgreSQL的数量成比例地提高 服务器。负载均衡在有很多情况下最有效 用户同时执行许多只读查询。
并行查询
使用并行查询功能,可以在多个数据之间拆分数据 服务器,以便可以在所有服务器上执行查询 同时减少总体执行时间。并行查询 在搜索大规模数据时效果最佳。
以下是documentation
功能的配置参数列表。