Ошибка производительности JdbcChannelMessageStore на PostgreSQL - PullRequest
0 голосов
/ 01 марта 2020

Я использую SI 4.3.19, и у нас есть некоторые проблемы с производительностью в хранилище сообщений на PostgreSQL, с 670 000 сообщений.

Я искал и нашел эту проблему:

https://github.com/spring-projects/spring-integration/issues/2629

, но я обнаружил, что это было исправлено в версии 5.0.11 и 5.1.2 ,

Планируется ли исправление в 4.3.x также?

Если нет, какие изменения вы рекомендуете применить к пользовательскому исправлению?

1 Ответ

0 голосов
/ 02 марта 2020

Рассмотрите возможность внесения этих изменений в вашу PostgreSQL схему:

CREATE SEQUENCE INT_MESSAGE_SEQ START WITH 1 INCREMENT BY 1 NO CYCLE;

CREATE TABLE INT_CHANNEL_MESSAGE (
    MESSAGE_ID CHAR(36) NOT NULL,
    GROUP_KEY CHAR(36) NOT NULL,
    CREATED_DATE BIGINT NOT NULL,
    MESSAGE_PRIORITY BIGINT,
    MESSAGE_SEQUENCE BIGINT NOT NULL DEFAULT nextval('INT_MESSAGE_SEQ'),
    MESSAGE_BYTES BYTEA,
    REGION VARCHAR(100) NOT NULL,
    constraint INT_CHANNEL_MESSAGE_PK primary key (REGION, GROUP_KEY, CREATED_DATE, MESSAGE_SEQUENCE)
);

CREATE INDEX INT_CHANNEL_MSG_DELETE_IDX ON INT_CHANNEL_MESSAGE (REGION, GROUP_KEY, MESSAGE_ID);
-- This is only needed if the message group store property 'priorityEnabled' is true
-- CREATE UNIQUE INDEX INT_CHANNEL_MSG_PRIORITY_IDX ON INT_CHANNEL_MESSAGE (REGION, GROUP_KEY, MESSAGE_PRIORITY DESC, CREATED_DATE, MESSAGE_SEQUENCE);

Таким образом, вы получите оптимизированный индекс без каких-либо изменений в коде Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...