0

我想知道 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 文档 (11.2)

我的问题:

  • 出队消息的数量如何大于入队消息的数量?
  • 如果有一定延迟的消息被添加到队列中,它们是否被计算在ENQUEUED_MSGSENQUEUED_DELAY_MSGS
  • 如果有一定延迟的消息在延迟之后被传递,它会被计算在DEQUEUED_MSGSMSGS_MADE_READY吗?
    • 如果是这样,怎么可能MSGS_MADE_READY大于ENQUEUED_DELAY_MSGS
  • 字段ENQUEUED_EXPIRY_MSGSMSGS_MADE_EXPIRED含义是什么?
  • ENQUEUED_MSGS和 和出列有什么区别ENQUEUE_TRANSACTIONS

提前感谢您的帮助!

4

1 回答 1

0

我很确定已经找到了上述大多数问题的解决方案。

  • DEQUEUED_MSGS可以大于ENQUEUED_MSGS重新启动数据库的情况。仍在队列表中的队列条目将保留在那里。数据库重新启动后,条目将出队并添加到出队消息数中,但不会添加到入队消息数中。
  • 该字段ENQUEUED_MSGS是排队到队列中的所有消息的总和。
  • 该字段ENQUEUED_DELAY_MSGS是延迟排队的所有消息的总和。
  • ENQUEUED_MSGS - ENQUEUED_DELAY_MSGS= 所有消息都立即入队
  • DEQUEUED_MSGS全部)和MSGS_MADE_READY(仅延迟)也是如此。

我还不知道是什么ENQUEUE_TRANSACTIONS意思DEQUEUE_TRANSACTIONS(也许 DEQUEUE_TRANSATIONS描述了多消费者队列中一条消息的出列数),但我不会使用这些字段。

于 2013-11-18T12:02:02.243 回答