Проблема производительности Oracle с массивными вставками и усечениями (AWR прилагается)

Я использую Oracle для синхронизации событий между двумя узлами моего сервера приложений (неважно, почему/если это лучший способ/и т. д. Это само собой разумеющееся).

Для этого я использую таблицу «событий», в которую один узел («активный») записывает новые события, а другой узел («пассивный») читает. Таблица выглядит так:

UUID события (UUID) || Идентификатор события (длинный) || Данные о событиях (несколько столбцов разного типа)

Идентификатор события — это постоянно увеличивающееся число (управляемое приложением, а не последовательность), которое указывает на ревизию внутренней модели после применения данных события. UUID события имеет уникальное ограничение. У меня есть один индекс для идентификатора события, чтобы облегчить выбор SQL - «Выбрать ... где Event_ID > XXX заказать по Event_ID», где XXX — это внутренний номер версии пассивного узла. Время от времени я усекаю таблицу (используя "усечение хранилища повторного использования").
[На самом деле, я использую три такие таблицы в циклическом порядке, поэтому я всегда могу обрезать ту, которую собираюсь записать в свой пассивный узел может успеть «догнать»].

После нескольких часов вставки и усечения, когда все в порядке, я начинаю получать много «шума» от базы данных, и время отклика резко падает. Это может продолжаться час или два (а то и больше), потом вдруг прекращается и время отклика возвращается к нормальному уровню. Отчеты AWR указывают на оператор truncate и немного на операторы вставки. Я подозреваю, что что-то происходит с DBWR, но не могу точно определить. Обратите внимание, что это снижение производительности происходит, даже когда вторичный узел (тот, на котором выполняются операторы «SELECT») отключен, поэтому это чистая вставка/усечение. Примечание 2. Эта проблема НЕ воспроизводится в MSSQL.

Вопрос: почему это происходит? Что я могу сделать, чтобы остановить это? Существуют ли альтернативы этому дизайну (чем ближе альтернатива к текущему дизайну, тем лучше).

Обновление 1: я мог ввести в заблуждение с названием. Это не одна массивная вставка, а струйка вставок по мере того, как события генерируются на сервере приложений.

Обновление 2: сравнение AWR выборки из первого периода (хорошо) и второго периода (плохо) находится по адресу http://pastehtml.com/view/1eirn20.html

Обновление 3: новый AWR diff на http://pastehtml.com/view/1eirn20.html

Обновление 4: решено. Судя по всему, это БЫЛО хранилище (спасибо ik_zelf!). Просто показывает - абстракции на самом деле не абстрактны. В конце концов, это намагниченная вращающаяся пластина.


person Ran Biron    schedule 13.05.2011    source источник
comment
@Ran Biron, есть ли какие-либо индексы в таблице, потому что их следует отключить перед массовыми вставками и т. д.   -  person Rob    schedule 13.05.2011
comment
@Rob: это не массовая вставка, а струйная вставка. Я обновлю вопрос.   -  person Ran Biron    schedule 13.05.2011
comment
Можете ли вы опубликовать отчет AWR для интервала, когда производительность низкая, и для интервала, когда производительность высокая?   -  person Justin Cave    schedule 13.05.2011
comment
@Ran Biron: на что похожа конфигурация? (archivelog, standbydb, при запуске резервного копирования активны ли одновременно работающие пользователи)?   -  person ik_zelf    schedule 13.05.2011
comment
@ Джастин - может быть (нужно спросить моего босса - конфиденциальная информация и т. д.) - но не раньше понедельника.   -  person Ran Biron    schedule 13.05.2011
comment
@ik_zelf: Это БД для тестирования производительности - без высокой доступности, поэтому нет архивного журнала / режима ожидания / резервных копий. Одновременных пользователей — от нуля до 20-30, но все они являются пользователями приложений, но в этих таблицах у нас есть только одна транзакция, выполняющая вставку, и раз в пять минут еще одна, выполняющая усечение.   -  person Ran Biron    schedule 13.05.2011
comment
@Ran Biron: система используется совместно с другими приложениями/базами данных? То же самое для хранения? Могут ли, например, резервные копии других повлиять на вашу производительность?   -  person ik_zelf    schedule 14.05.2011
comment
@ik_zelf: система не является общей - она ​​предназначена для теста.   -  person Ran Biron    schedule 17.05.2011
comment
Хранилище тоже выделено? (какой?)   -  person ik_zelf    schedule 17.05.2011
comment
@ik_zelf - хранение может быть проблематичным, но мне понадобится неопровержимый факт (из моих журналов), чтобы оправдать его изучение.   -  person Ran Biron    schedule 17.05.2011
comment
Достаточно ли изменения коэффициента 2 в 10 раз?   -  person ik_zelf    schedule 17.05.2011


Ответы (1)


В отчетах awr четко указано, что время ввода-вывода удваивается в плохой период по сравнению с первым периодом. Проверьте использование хранилища. Вполне может быть, что хранилище используется совместно между системами и, например, другая система делает резервную копию и вызывает плохой период. Проверьте журналы всех подключенных систем/резервных копий и попробуйте связать время с результатами вашего теста.

person ik_zelf    schedule 17.05.2011
comment
Судя по всему (после долгих перемоток) проблема БЫЛА в хранении. Спасибо за подсказку, действительно помогло. - person Ran Biron; 25.05.2011
comment
:-D Во многих случаях SAN рассматриваются как решение для консолидации хранилищ, но не предназначены для повышения производительности... Рад, что это помогло. - person ik_zelf; 25.05.2011