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 文档: 会话信息函数