различное время ответа при выполнении определенного запроса - PullRequest
0 голосов
/ 23 апреля 2019

Я некоторое время пытался выяснить проблему с производительностью и был бы признателен, если бы кто-нибудь мог помочь мне разобраться в этой проблеме.

Наше приложение подключено к Oracle 11g.У нас есть очень большая таблица, в которой мы храним данные за последние два месяца.Мы делаем миллионы вставок каждые полчаса и выполняем массовую операцию удаления в конце каждого дня.Два из наших столбцов проиндексированы, и у нас определенно есть перекос столбцов.

Проблема в том, что при чтении из этой таблицы мы сталкиваемся со многими медленными ответами.Я провел некоторые исследования, так как я не эксперт по БД.Я знаю о просмотре переменных связывания и совместном использовании курсора.Проблема в том, что даже для одного конкретного запроса с определенными параметрами мы видим различное время выполнения!

В таблице нет столбца больших объектов, и запрос, который мы используем для чтения данных, не является сложным!он ищет все строки с определенным именем (столбец индексируется) в пределах определенного диапазона (столбец индексируется).

  • Мне интересно, может ли большое количество вставок / удалений, которые мы делаем, вызвать какие-либо проблемы?
  • Есть ли какой-либо анализ, который мы могли бы рассмотреть, чтобы получить больше информации по этому вопросу?

1 Ответ

1 голос
/ 23 апреля 2019

Я вижу несколько возможных причин несоответствия времени вашего запроса.

  1. Количество обновлений, выполняемых во время выполнения вашего запроса. Пока в таблицах, которые вы используете в запросе, есть блокировки, ваш запрос должен ожидать их освобождения.
  2. Статистические данные в таблице могут сильно не совпадать с этим большим количеством манипуляций с данными. Я бы попробовал две вещи. Во-первых, я узнаю, когда выполняется задание DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC, и проверю, выполняется ли массовое удаление перед этим заданием каждую ночь. Если это не поможет, я бы попросил администратора баз данных установить DBMS_MONITOR в вашей базе данных, чтобы помочь вам решить проблему.
...