2009-11-19 3 views
1

Мне интересно, если у вас есть таблица, содержащая 24 миллиона записей, как это влияет на производительность (каждая вставка/обновление/удаление) занимает значительно больше времени?Вопрос о производительности Oracle

Это наша таблица аудита, поэтому, когда мы вносим изменения в другие таблицы, мы регистрируемся затем в журнале аудита, также требуется значительно больше времени для выполнения этих обновлений?

ответ

0

Есть много факторов, которые вступают в игру в отношении того, как быстро происходит вставка/обновление/удаление. Например, сколько индексов находится в таблице? Если таблица содержит много индексов, и вы вставляете/обновляете таблицу, это может привести к тому, что операция займет больше времени. Как хранятся данные в физических структурах базы данных (т. Е. Табличные пространства, если вы используете Oracle, например)? Являются ли ваши индексы и данные отдельными дисками, что может помочь ускорить ввод-вывод?

Очевидно, что если вы записываете записи аудита, это может повлиять на производительность. Но в хорошо настроенной базе данных она не должна замедлять ее настолько, чтобы вы заметили.

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

Я бы рекомендовал посмотреть вывод плана объяснения для одного из ваших медленных обновлений, если вы используете Oracle (в других БД обычно есть такие инструменты, как google может помочь здесь). Затем вы можете увидеть, какой план оптимизатор генерирует и диагностировать, где могут быть проблемы. Вы можете потенциально получить DBA, чтобы помочь вам, чтобы помочь выяснить, что вызывает медленность.

1

Правильный ответ: «это зависит», конечно ...

Но, насколько я, ваше беспокойство в том, как таблица аудита влияет на производительность запросов (на другие таблицы), когда таблица аудита растет.

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

Конечно, выберите или удалите по таблице аудита itseft может взять больше времени, когда стол растет.

1

Если я прочитал ваш вопрос как «делает большую таблицу Oracle более длительной для операций ВМС», вообще говоря, ответ отрицательный. Я думаю, что наибольшее влияние на операции вставки/обновления/удаления будет ощущаться из индексов, представленных в этой таблице (больше индексов = более низкая производительность для этих операций).

Однако, если ваша логика аудита должна искать существующие строки в таблице аудита для процедурной логики в некотором роде, которая не использует первичные или уникальные ключи, тогда будет влияние производительности с большой таблицей.

+0

Почему? Вы хотите сказать, что {удалить все из таблицы (с 10.000)} займет то же время, что и {удалить все из таблицы (с 10.000.000)}> «вообще говоря, ответ не« <вы абсолютно НЕПРАВИЛЬНЫ! – magulla

0

Я подозреваю, что производительность будет больше связана с конкуренцией, чем размер таблицы. Как правило, вставки заканчиваются на «конце» таблицы. Сессии, вставляемые в эту таблицу, должны запирать блок, пока они записывают записи. В течение этого времени другим сеансам, возможно, придется дождаться этого блока (где вы можете увидеть события ожидания оживленного буфера).

Но вам действительно нужно посмотреть на SQL-запросы и посмотреть, что они ожидают, и внесут ли они существенный вклад в недопустимый уровень производительности. Затем определите курс действий, основанный на конкретных событиях ожидания, которые вызывают проблему.

ЗАКАНЧИВАТЬ ничего от Cary Милсап по настройке производительности

0

Влияние размера таблицы различен для INSERT, DELETE и операция UPDATE

Вставить заявление не влияет много по размеру таблицы, как, когда мы Вставка данных в таблица будет добавлена ​​к следующему доступному блоку данных. Если в этой конкретной таблице есть индексы, тогда Oracle должен искать конкретный блок данных перед вставкой данных в этот блок, для чего требуется операция поиска, требующая времени.

Удаление и заявления Update подвергаются воздействию размера таблицы как больше данных больше времени требуется для поиска конкретной строки для удаления и операции обновления

Смежные вопросы