罗宾斯·塔拉坎:为什么Postgres没有remote_receive - 以及我尝试它时发生了什么

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

在分布式数据库环境中,PostgreSQL的synchronous_commit参数在耐久性和性能之间取得平衡。研究表明,remote_receive模式在特定条件下能提高性能,尤其是在慢硬盘上优于remote_write,而在快速环境中两者表现相似。最终结果显示,remote_receive在消除噪声后略微超越remote_write,强调了操作系统缓存对数据库基准测试的影响。

🎯

关键要点

  • 在分布式数据库环境中,PostgreSQL的synchronous_commit参数用于平衡耐久性和性能。

  • remote_receive模式通过等待WAL字节到达备用机的内存,可能在特定条件下提高性能。

  • 在快速环境中,remote_receive和remote_write的性能表现相似,但在慢硬盘上,remote_receive略微优于remote_write。

  • 现代操作系统中的pwrite()操作不会立即写入物理磁盘,而是将数据复制到操作系统的页面缓存中,这使得remote_write和remote_receive在典型条件下表现相近。

  • 在慢硬盘的测试中,经过消除噪声后,remote_receive的性能比remote_write高出约4.9%。

  • 数据库基准测试中,操作系统的页面缓存会掩盖物理磁盘延迟,准确的基准测试需要更高的迭代次数和严格的缓存刷新。

🔎

延伸解读

性能与耐久性的权衡

在分布式数据库中,PostgreSQL的synchronous_commit参数用于平衡性能与耐久性。remote_receive模式虽然在特定条件下能提高性能,但在一般情况下,remote_write由于其耐久性优势,仍然是更可靠的选择。用户在选择模式时需考虑具体的硬件环境和应用需求。

基准测试的重要性

文章强调了在进行数据库基准测试时,操作系统的页面缓存可能掩盖物理磁盘的延迟。为了获得准确的测试结果,必须进行严格的缓存刷新和多次迭代。这一过程对于评估不同模式的真实性能至关重要,尤其是在慢硬盘环境下。

网络延迟的影响

在测试中,网络往返时间(RTT)对性能的影响显著。即使remote_receive在某些情况下表现出微小的性能优势,网络延迟仍然是决定整体性能的主要因素。因此,在高延迟环境中,选择合适的模式尤为重要。

延伸问答

PostgreSQL的synchronous_commit参数有什么作用?

synchronous_commit参数用于在耐久性和性能之间取得平衡,决定何时向客户端返回COMMIT成功的确认。

remote_receive模式如何提高性能?

remote_receive模式通过等待WAL字节到达备用机的内存,可能在特定条件下提高性能,尤其是在慢硬盘上。

在快速环境中,remote_receive和remote_write的性能表现如何?

在快速环境中,remote_receive和remote_write的性能表现相似,几乎没有显著差异。

为什么在慢硬盘上remote_receive的性能优于remote_write?

在慢硬盘的测试中,经过消除噪声后,remote_receive的性能比remote_write高出约4.9%。

操作系统的页面缓存对数据库基准测试有什么影响?

操作系统的页面缓存会掩盖物理磁盘延迟,导致基准测试结果不准确,需要更高的迭代次数和严格的缓存刷新。

在进行数据库基准测试时,应该注意哪些因素?

应使用交错运行、更高的迭代次数和严格的操作系统缓存刷新,以准确测量存储性能。

🏷️

标签

➡️

继续阅读