暂无图片
postgresql segment size对性能的影响如何?
我来答
分享
暂无图片 匿名用户
postgresql segment size对性能的影响如何?

RT,数据文件段大小对于性能有没有影响?在哪些场景下影响如何?各位大佬初始化实例时,该参数值如何设置?
之前以为会影响大表的点查场景(以为查询时只需扫描该条数据所在的文件即可,要例如,一个20G的大表,如果查询一条数据,默认segsize=1G的情况下,只要扫描1G的数据文件,如果是segsize=10G,那么要扫描10G的数据文件),然后我用strace跟踪发现,不只是待查询的tuple所在的数据文件会被open,表的所有数据文件都会被open。
然后在不同大小的segsize下,我用pgbench进行了并发测试(测试语句:select * from tt where id=xx),发现结果相差并不大。

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
大魔导师秀儿

段大小大点可以减少文件数量,减少磁盘 I/O 操作的次数,提高数据库的读写性能。段大小较大可能导致并发访问时的争用增加。当多个事务需要同时访问同一个段时,较大的段大小可能导致更多的锁竞争和冲突,从而降低并发性能。总之动态调整吧,有利有弊,少做少错

暂无图片 评论
暂无图片 有用 5
清风生

那具体怎么设计测试方案模拟出段大小对性能的影响?

暂无图片 评论
暂无图片 有用 0
大魔导师秀儿

段大小从1往上成倍加呗,然后并发也往上成倍加,看事务响应时间变慢没诶

暂无图片 评论
暂无图片 有用 0
小草

在 PostgreSQL 中,segment size(数据文件段大小)对性能的影响是比较复杂的,并不直接决定点查场景下的性能。具体的影响取决于多个因素,包括硬件性能、查询模式、索引使用等。

从你的观察结果来看,在查询一条数据时,默认情况下,不仅会打开待查询的 tuple 所在的数据文件,还会打开表的所有数据文件。这符合 PostgreSQL 的工作方式,它执行按需打开文件的策略,以支持并发访问和更好地利用缓存。

因此,数据文件段大小并不会明显影响点查场景下的性能,因为只有涉及到查询的 tuple 的数据文件才会被打开。而在你进行的并发测试中,结果相差不大,可能是因为在并发场景下,其他因素如锁竞争、磁盘IO等更加显著地影响性能。

在初始化实例时,可以考虑将 segment size 设置为适当的值。过小的段大小可能会导致太多的文件打开操作,降低性能,而过大的段大小可能浪费空间和资源。通常建议将段大小设置为默认值 1GB,除非有特殊的需求。

需要注意的是,segment size 是一个初始化时的参数,一旦设置后,不能更改。因此,在选择 segment size 时,需要考虑到数据库的预期大小、硬件性能和应用需求。

总结起来,segment size 对性能的影响相对较小,并不是主要的性能瓶颈。在优化性能时,更应关注其他因素,如查询优化、索引设计、硬件配置等。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏