An inbound queue contains updates to all of the replicated tables in a primary database. The inbound queue keeps these updates for the duration of the longest open transaction. Queue sizes are expressed in bytes.
InboundQueueSizetypical = InboundDatabaseVolume * TransactionDurationtypical
InboundQueueSizelongest = InboundDatabaseVolume * TransactionDurationlongest
InboundDatabaseVolume is the volume of messages calculated by the formulas described in Database Volume.
You can use the OutboundDatabaseVolume to calculate the InboundQueueSize if you do not need to be precise.
TransactionDuration typical represents the number of seconds for a typical transaction.
TransactionDuration longest represents the number of seconds for the absolute transaction.
In practice, the maximum size of the inbound queue is slightly longer than the calculation, because while a long transaction is being read, new transactions are being added to the log. Since the duration of the longest transaction is an approximation, when determining its value add an estimate for the short period required to read and process it from the stable queue.
Also note that the size of the queue may be larger if messages trickle slowly into the Replication Server. Replication Server writes messages to stable queues in fixed blocks of 16K. To reduce latency, it writes even partially full blocks every second. (You can use the init_sqm_write_delay configuration parameter to change the time delay to something other than 1 second.) If several messages arrive almost simultaneously, all of them are written into one block. But if the same messages arrive at staggered intervals, each may occupy separate block.