GV $ PERSISTENT_QUEUES字段

时间:2013-11-01 07:44:36

标签: oracle oracle11g queue advanced-queuing

我想知道oracle表GV$PERSISTENT_QUEUES上的字段到底意味着什么。

文档:

ENQUEUED_MSGS           NUMBER  Number of messages enqueued
DEQUEUED_MSGS           NUMBER  Number of messages dequeued
  Note: This column will not be incremented until all the subscribers of the message have dequeued the message and its retention time has elapsed.
...
ENQUEUED_EXPIRY_MSGS    NUMBER  Number of messages enqueued with expiry
ENQUEUED_DELAY_MSGS     NUMBER  Number of messages enqueued with delay
MSGS_MADE_EXPIRED       NUMBER  Number of messages expired by time manager
MSGS_MADE_READY         NUMBER  Number of messages made ready by time manager
...
ENQUEUE_TRANSACTIONS    NUMBER  Number of enqueue transactions
DEQUEUE_TRANSACTIONS    NUMBER  Number of dequeue transactions

Oracle Documentation (11.2)

我的问题:

  • 出队消息​​的数量如何大于排队消息的数量?
  • 如果有一定延迟的邮件被添加到队列中,是否会在ENQUEUED_MSGSENQUEUED_DELAY_MSGS计算?
  • 如果延迟后发送了一段有一定延迟的邮件,是否会计入DEQUEUED_MSGSMSGS_MADE_READY
    • 如果是,MSGS_MADE_READY如何大于ENQUEUED_DELAY_MSGS
  • 字段ENQUEUED_EXPIRY_MSGSMSGS_MADE_EXPIRED的含义是什么?
  • ENQUEUED_MSGSENQUEUE_TRANSACTIONS之间有什么区别,与出队相同?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我很确定已找到上述大部分问题的解决方案。

    如果重启数据库,
  • DEQUEUED_MSGS可能大于ENQUEUED_MSGS。仍在队列表中的队列条目将保留在那里。数据库重启后,这些条目将被出列并添加到出队消息的数量中,但它们不会被添加到排队消息的数量中。
  • 字段ENQUEUED_MSGS是排入队列的所有邮件的总和。
  • 字段ENQUEUED_DELAY_MSGS是排队延迟的所有邮件的总和。
  • ENQUEUED_MSGS - ENQUEUED_DELAY_MSGS =所有已及时排队的邮件
  • 同样适用于DEQUEUED_MSGS(全部)和MSGS_MADE_READY(仅限延迟)。

我还不知道ENQUEUE_TRANSACTIONSDEQUEUE_TRANSACTIONS是什么意思(也许DEQUEUE_TRANSATIONS描述了多个消费者队列中一条消息的出列数),但我不会使用那些领域。