pg_notification_queue_usage()
是一个系统函数,返回异步通知队列最大大小的当前占用部分(未处理通知所占用的部分)。
pg_notification_queue_usage()
在 PostgreSQL 9.6 中添加。
用法
pg_notification_queue_usage () → double precision
返回的数字是一个介于 0
和 1
之间的值,表示异步通知队列的最大大小(默认:8GB)被通知(由 NOTIFY
命令或 pg_notify()
函数发送)占用的部分,这些通知尚未被监听会话使用。
更改历史记录
- PostgreSQL 9.6
- 添加(提交 a04bb65f)
示例
基本执行示例 pg_notification_queue_usage()
,指示队列中没有消息
postgres=# SELECT pg_notification_queue_usage(); pg_notification_queue_usage ----------------------------- 0 (1 row)
将大量消息插入队列;请注意,这至少需要另一个会话在通道 foo
上监听
postgres=# CREATE TABLE notifications(channel NAME NOT NULL, message TEXT); CREATE TABLE postgres=# INSERT INTO notifications SELECT 'foo', y || REPEAT('x', 7990) FROM generate_series(1,10000) AS x(y); INSERT 0 10000 postgres=# SELECT COUNT(pg_notify(channel, message)) FROM notifications; count ------- 10000 (1 row) postgres=# SELECT pg_notification_queue_usage(); pg_notification_queue_usage ----------------------------- 0.01049041748046875 (1 row)
参考文献
- PostgreSQL 文档: 会话信息函数