Для любой хорошей системы есть 3 важные вещи: Процессор, Диск, Память. Из этих трёх, Диск является наиболее критичным для SQL Server. Смотря на случаи из реального мира, я не вижу людей, которые улучшают Процессоры или Память часто, однако Диски меняются достаточно часть (увеличение дискового пространства, пропускной способности). Сегодня мы рассмотрим ещё одно ожидание, которое относится к Диску.
Из Book On-Line:
Имеет место, когда для своего завершения задача ожидает ввода-вывода.
Объяснение:
Любые задания ожидают завершения I/O. Если SQL Server очень медленно обрабатывает данные и клиенты ожидают их, то счётчик ASYNC_IO_COMPLETION будет увеличиваться. Так же это ожидание провоцируется Backup, созданием и редактированием баз данных.
Уменьшение ASYNC_IO_COMPLETION ожиданий:
1. Посмотрите на код и найдите там не оптимальные участки, по возможности перепишите их
2. Надлежащим образом, на разных дисках, разместите файлы журналов (LDF) и файлы данных (MDF), Tempdb на другом отдельном диске, часто используемые таблицы в разных файловых группах и на разных дисках.
3. Проверьте статистику использования файлов баз данных, обратите внимание на IO Read Stall и IO Write Stall (fn_virtualfilestats)
4. Проверьте файл логов на наличие ошибок Диска
5. Если вы используете SAN (сетевое хранилище данных), то необходимо правильно настроить параметр HBA Queue Depth, почитать о котором можно в интернете
6. Проверьте наличие нужных индексов
7. Проверьте показания следующих счётчиков Perfomance Monitor
SQLServer: Memory Manager\Memory Grants Pending (Постоянное значение более чем 0-2 свидетельствует о проблеме)
SQLServer: Memory Manager\Memory Grants Outstanding
SQLServer: Buffer Manager\Buffer Hit Cache Ratio (Чем больше, тем лучше. Обычно значение долго превышать 90%)
SQLServer: Buffer Manager\Page Life Expectancy (плохо, когда ниже 300)
Memory: Available Mbytes
Memory: Page Faults/sec
Memory: Pages/sec
Average Disk sec/Read (Постоянное значение более чем 4-8 мс свидетельствует о проблеме)
Average Disk sec/Write (Постоянное значение более чем 4-8 мс свидетельствует о проблеме)
Average Disk Read/Write Queue Length
Заметка: Представленная тут информация является только моим опытом. Я настраиваю, чтобы вы читали Books On-Line. Все мои обсуждения ожиданий здесь носят общий характер и изменяются от системы к системе. Я рекомендую сначала тестировать всё на сервере разработки, прежде чем применять это на рабочем сервере.
Автор: Pinal Dave
*** *** *** *** *** *** *** *** *** *** *** ***
Полезные Скрипты
Рубрика Проверь себя
Ссылка на наш канал YouTube