Per-Channel Message Tables
Overview
QIE stores message processing data (source messages, processed messages, channel logs, message cache, filter results, and DICOM responses) in a set of database tables. Prior to version 25.4.1, every channel in the environment shared a common set of these tables. As environments grew — some customers reaching tens of millions of messages and hundreds of gigabytes of data — these shared tables became a performance bottleneck. Large shared indexes caused lock contention during routine queries (such as searching the completed queue), slowed down purge operations, and in some cases prevented users from logging in or navigating the application while a long-running query held locks.
To address this, starting with version 25.4.1 QIE now gives each channel its own dedicated set of message processing tables. This isolates each channel's data and indexes, dramatically reducing lock contention and improving throughput.
How It Works
When a new channel is created, QIE automatically creates a dedicated set of tables for that channel. The tables follow this naming convention:
z_{channelId}_{tableName}
For example, the message table for a channel with ID a80818699e490c30199e496d7a90001 is: z_8a80818699e490c30199e496d7a90001_message
The following tables are created per channel:
- source: Original source message data
- message: Processed message meta-data
- message_blob: Message payload data
- channel_log: Per-channel log entries
- channel_log_blob: Log entry payload data
- message_cache: Per-message cache data
- source_filter_result: Saved-view filter results for source messages
- message_filter_result: Saved-view filter results for processed messages
- dicom_response: DICOM response data (DICOM channels)
All new channels created in QIE use per-channel tables automatically. No action is required.
Converting a Legacy Channel
Channels that existed before this feature was introduced continue to use the shared (legacy) tables until they are explicitly converted. Conversion is performed from the channel properties dialog under the Advanced Settings tab using the 'Use individual tables for channel' option.
Requirements for conversion:
- The channel must be stopped.
- All existing messages for the channel must be purged from the system. Conversion does not migrate existing messages — it switches the channel to a new, empty set of tables. Any messages still in the source, processing, outbound, completed, or error queues will become inaccessible if the channel is converted before they are purged.
To convert a channel:
- Stop the channel.
- Purge all messages for the channel.
- Open the channel properties dialog and select the Advanced Settings tab.
- Enable 'Use individual tables for channel'.
- Save the channel. QIE will create the new per-channel tables.
- Start the channel. New messages will be written to the dedicated tables.
Once a channel has been converted, it cannot be reverted to the shared legacy tables.