3

使用Vert.x优化关系数据库PostgreSQL访问 | foojay

 2 years ago
source link: https://www.jdon.com/56767
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
使用Vert.x优化关系数据库PostgreSQL访问 | foojay

HTTP/2 引入多路复用以大幅提高性能花了 25 年的时间。大多数数据库协议还没有遵循相同的路径,仍处于连接池的石器时代(至少具有公开记录协议的数据库)。多路复用数据库协议可以提高性能,并使连接池成为过去。它还将为从数据库中高效传输数据提供基础。

该文使用PostgreSQL异步客户端Vert.x PostgreSQL Client为 PostgreSQL 实现了流水线管道操作。使用此客户端,您可以通过将多个语句排入与数据库的单个交换中来增加并发性。

PostgreSQL 是否支持消息流水线是一个合理的问题。PostgreSQL 客户端协议使用长度前缀成帧技术。因此,它准确地知道要读取多少字节来处理消息。当 PostgreSQL 处理一条消息时,它会读取这条消息的确切字节数。然后它写入响应消息并恢复消息处理。当客户端管道传输多条消息时,PostgreSQL 只读取第一条消息,然后在写入响应消息后读取后面的消息;唯一的区别在于客户端没有等待响应发送消息。

Vert.x PostgreSQL Client 支持连接级流水线和池级流水线:

  • 连接级流水线允许在同一连接上流水线查询。
  • 池级流水线公开了由连接池支持的客户端 API。它可以在池的任何连接上管道多个查询。池可以应用优化,例如选择最合适的连接(例如,具有较少飞行命令的连接)

该文开发了一个基准测试,测量在单个 PostgreSQL 连接上执行 5000 个查询;每个执行都被配置为使用不同级别的流水线,详细点击标题


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK