Я запускаю некоторые хранимые процедуры в SQL Server 2012 под Windows Server 2012 на выделенном сервере с 32 ГБ оперативной памяти и 8 ядер процессора. Использование ЦП всегда ниже 10%, а объем использования ОЗУ - 80%, поскольку SQL Server имеет 20 ГБ (32 ГБ).Долгосрочный запрос SQL Server с часами, но с использованием низкого процессора
Существует несколько хранимых процедур, которые занимают 4 часа в несколько дней и в другие дни с почти одинаковыми данными, занимают 7 или 8 часов.
Я использую наименее ограничительный уровень изоляции, поэтому я думаю, что это не должно быть проблемой блокировки. Размер базы данных составляет около 100 ГБ, а в самой большой таблице - около 5 миллионов записей.
Процессы имеют объемные вставки, обновления и удаления (в некоторых случаях я могу использовать truncate, чтобы избежать генерации журналов и сэкономить некоторое время). Я делаю несколько полнотекстовых поисковых запросов в одной таблице.
У меня есть полный контроль над сервером, поэтому я могу изменить любой параметр конфигурации.
У меня есть несколько вопросов:
- Можно ли повысить производительность запросов с использованием параллелизма?
- Почему загрузка процессора настолько низка?
- Каковы наилучшие методы настройки SQL Server?
- Каковы лучшие бесплатные инструменты для аудита сервера? Я попробовал один от Microsoft под названием SQL Server 2012 BPA, но в отчете всегда пустым без предупреждений.
EDIT: Я проверил журнал, и я нашел это:
03/18/2015 11: 09: 25, spid26s, Unknown, SQL Server обнаружена 82 возникновения (ов) из I/O запросы, занимающие более 15 секунд, для завершения в файле [C: \ Program Files \ Microsoft SQL Server \ MSSQL11.HLSQLSERVER \ MSSQL \ DATA \ templog.ldf] в базе данных [tempdb] (2). Файл дескриптора ОС - 0x0000000000000BF8. Смещение последнего длинного ввода-вывода: 0x00000001fe4000
Ваша проблема сложна и может быть много причин для вашей проблемы с производительностью. Использование ЦП настолько низкое, вероятно, потому, что сервер обменивается на диске, потому что память заполнена. (Это моя догадка) –
Вы должны начать с просмотра, можете ли вы улучшить запросы. Посмотрите на план выполнения. Вы можете использовать SQL Server Profiler, чтобы точно узнать, что происходит на сервере. Вы даже можете добавить план выполнения в профилировщик, чтобы вы знали, что запросы слишком медленные. –
Вы также можете использовать SQL Sentry Plan Explorer (бесплатно), чтобы исследовать план выполнения и опубликовать его здесь (при необходимости анонимно): http://www.sqlsentry.com/products/plan-explorer/sql-server-query- view # download – NickyvV