Недавно у нас возникли проблемы с блокировкой нашей базы данных Oracle по одному известному нам запросу.
Я расскажу о том, что произошло, но на самом деле это не имеет большого отношения к моему вопросу, но я открыт для предложений.
Периодически не известно, когда это произойдет, произошло 4 раза за последний месяц, пользователь щелкнет что-то в приложении. На что нажимает пользователь, пока неизвестно. Когда что-либо щелкнет, он запустит запрос к базе данных, который сгенерирует около 700 тысяч строк.
Я проверил таблицу, по которой выполняется запрос, и индексы выглядят хорошо.
База данных 60гб там на сервере 32гб.
Из журналов на сервере базы данных я вижу высокий уровень ввода-вывода, но ЦП и ОЗУ остаются прежними.
На сервере приложений загрузка ЦП достигает 75%. Я могу найти рабочий процесс, найти PID, однако, когда я убью PID, связанный с рабочим процессом, ЦП ненадолго отключится, а затем вернется обратно.
Также перезапуск пула приложений и перезапуск IIS делает то же самое: ЦП на короткое время отключается, а затем снова включается.
Единственное, что можно сделать, чтобы вернуть сервер в строй, - это перезапустить.
Итак, мое предложение: ЕСЛИ этот запрос является причиной зависаний, можно ли увеличить память на коробке, чтобы база данных могла кэшироваться и не хватать памяти. Я слышал это однажды, но не уверен, правда ли это.
Хранилище - это HP PAR 3 с 3 уровнями, а база данных в значительной степени находится на уровне SSD.
Что быстрее SSD или память
Что быстрее SSD или память
DRAM быстрее, чем флэш-память NAND. Доступ к ОЗУ составляет порядка 100 нс, а произвольное чтение SSD - около 16000 нс. Цифры задержки, которые должен знать каждый программист
Вам необходимо провести систематический анализ того, что происходит и почему. Не меняйте положение вещей только потому, что вы слышали что-то из вторых рук о другой системе. Найдите, в чем проблема в этой системе.
К счастью, в СУБД обычно есть инструменты для повышения производительности. Oracle и другие СУБД имеют EXPLAIN PLAN
чтобы показать полное сканирование и другие недостатки. Запросы могут ужасно работать даже с индексами. Также существуют отчеты о производительности системы, такие как Oracle AWR, для поиска узких мест. Если вы хотите узнать больше о производительности БД, вы также можете спросить наш дочерний сайт, https://dba.stackexchange.com/