2016-10-25 1 views
0

У меня есть приложение, которое использует базу данных oracle на 8 основных машинах и 16 ГБ оперативной памяти. Таблица содержит 15 столбцов и около 5700 000 строк. Есть индексы по 5 столбцам, которые часто обновляются. Когда мы помещаем нагрузку в 100 запросов/секунду, которая представляет собой запрос на вставку, а затем выполняется всякая операция чтения и обновления, выполняемая в каждом цикле запросов, загрузка загрузки процессора возрастает экспоненциально и достигает 25, после чего я начинаю получать ошибку100 запросов в секунду с несколькими индексами приводит к загрузке сервера из 25 в базе данных оракула

I/O Error : Socket read time out. 

Однако, когда мы выполняем те же операции с индексами в одном столбце, тогда загрузка остается неизменной до 4-5. Хотя индексирование по 5 столбцам и наличие машины с 8 ядрами и 16 Гб ОЗУ, загрузка не должна иметь такой большой разницы.

+2

Я не уверен, в чем вопрос. Добавление индексов создает накладные расходы - эти индексы необходимо поддерживать при вставке и обновлении данных. Индексы на часто обновляемых столбцах имеют относительно большой объем накладных расходов. Вы, кажется, говорите, что ваши тесты нагрузки подтверждают эти ожидания. Магических «использовать точно такие же индексы, кроме как поддерживать их более эффективно» не существует. Не знаю, нужно ли вам пересматривать индексы, которые вы считаете нужными, аппаратное обеспечение, которое вы пытаетесь использовать, дизайн приложения или что-то еще. –

+0

@JustinCave благодарит за ответ. Если я вставляю строку в базу данных, индексы таблиц обновляются. Означает ли это, что все индексы перегруппированы в B-Tree? – Abhimanyu

+0

Я не уверен, что вы подразумеваете под «перегруппировкой». Вставка новой строки может включать в себя такие вещи, как блокировки блоков, которые могут быть тем, о чем вы говорите. –

ответ

0

Было бы полезно, если бы вы могли показать DDL для создания таблицы и создания ваших пяти индексов. Было бы также полезно понять, что представляет собой каждый индексированный столбец, как выглядит распределение этих данных, насколько уникальными являются значения, как часто обновляется столбец, а не вставлен и т. Д. Точность ответов во многом зависит от ясности ваш вопрос. Есть кнопки, которые вы можете включить создание индекса, которое может помочь в ваших проблемах с производительностью, но здесь недостаточно информации, чтобы предложить какую-либо помощь.

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