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

オラクルのドキュメント (11.2)

私の質問:

  • キューから取り出されたメッセージの数が、キューに入れられたメッセージの数よりも大きくなるにはどうすればよいですか?
  • ENQUEUED_MSGS特定の遅延を伴うメッセージがキューに追加された場合、それらはおよびでカウントされENQUEUED_DELAY_MSGSますか?
  • 特定の遅延のあるメッセージが遅延後に配信された場合、それは と でカウントされDEQUEUED_MSGSますMSGS_MADE_READYか?
    • もしそうなら、どのようMSGS_MADE_READYに より大きいことができますENQUEUED_DELAY_MSGSか?
  • フィールドENQUEUED_EXPIRY_MSGSMSGS_MADE_EXPIRED意味は何ですか?
  • デキューと同じ とENQUEUED_MSGSの違いは何ですか?ENQUEUE_TRANSACTIONS

助けてくれてありがとう!

4

1 に答える 1

0

上記の質問のほとんどに対する解決策を見つけたと確信しています。

  • DEQUEUED_MSGSENQUEUED_MSGSデータベースの再起動の場合よりも大きくなる可能性があります。まだキュー テーブルにあるキュー エントリはそこに残ります。データベースの再起動後、エントリはデキューされ、デキューされたメッセージの数に追加されますが、エンキューされたメッセージの数には追加されません。
  • フィールドENQUEUED_MSGSは、キューに入れられたすべてのメッセージの合計です。
  • FieldENQUEUED_DELAY_MSGSは、遅延でエンキューされたすべてのメッセージの合計です。
  • ENQUEUED_MSGS - ENQUEUED_DELAY_MSGS= 遅延なくエンキューされたすべてのメッセージ
  • DEQUEUED_MSGS(すべて)およびMSGS_MADE_READY(遅延のみ)についても同じです。

ENQUEUE_TRANSACTIONS何をDEQUEUE_TRANSACTIONS意味する のかはまだわかりませんが(おそらくDEQUEUE_TRANSATIONS、複数のコンシューマ キュー内の 1 つのメッセージのデキュー数を説明しているのかもしれません)、これらのフィールドは使用しません。

于 2013-11-18T12:02:02.243 に答える