↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 9.4
历史版本。 PostgreSQL 9.4 已结束支持。 2020-02-13. 请参阅 当前版本手册.

F.41. test_shm_mq #

test_shm_mq是一个如何使用动态共享内存和共享内存消息队列设施来协调用户后端与一个或多个后台工作进程的示例。它本身不适合做任何有用的事情;确切地说,它是对这些设施如何使用的一种演示,同时也是对这些设施的单元测试。

这个扩展中的函数通过一个进程环反复发送同一条消息。消息的有效载荷、发送消息所经消息队列的大小,以及环中进程的数量都是可配置的。最后,可以对消息进行验证,以确保它在传输过程中没有被破坏。

F.41.1. 函数

test_shm_mq(queue_size int8, message text,
            repeat_count int4 default 1, num_workers int4 default 1)
    RETURNS void

这个函数同步地发送和接收消息。用户后端使用给定大小的消息队列把所提供的消息发送给第一个后台工作进程。如果工作进程的数量大于一,第一个后台工作进程再把消息发送给第二个后台工作进程,依此类推。最终,最后一个后台工作进程把消息发回给用户后端。如果重复计数大于一,用户后端随后会再次把消息发送给第一个工作进程。一旦消息被所有协作进程发送和接收的次数达到重复计数,用户后端会验证最终收到的消息与最初发送的消息是否一致,如果不一致则抛出错误。

test_shm_mq_pipelined(queue_size int8, message text,
                      repeat_count int4 default 1, num_workers int4 default 1,
                      verify bool default true)
    RETURNS void

这个函数按重复计数指定的次数,使用给定大小的队列把同一条消息多次发送给第一个后台工作进程。这些消息随后被依次转发给每个后台工作进程,每种情况下都使用给定大小的队列。最后,最后一个后台工作进程把这些消息发回给用户后端。用户后端使用非阻塞的发送和接收,因此在发完所有消息副本之前,它就可以开始接收消息的副本。verify参数控制是否将收到的副本与发送的消息进行核对。(这需要不少时间,因此在做基准测试时禁用它可能有用。)

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.