Когда я изменяю или создаю хранимую процедуру непосредственно в производственной базе данных или базе данных QA, через несколько секунд у меня начинаются тайм-ауты, и приложение становится недоступным.
Файлы журнала показывают эту ошибку:
SQL Server обнаружил 3 вхождения запросов ввода-вывода, выполнение которых длилось более 15 секунд в файле [C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ QA_Database.ldf] в базе данных [QA_Database ] (9). Дескриптор файла ОС - 0x0000000000000568. Смещение последнего длинного ввода-вывода: 0x0000002821a200
У нас установлен SQL Server 2008 R2, включая последний пакет обновления. Производственная и постановочная среды полностью разделены.
Я пытался воспроизвести его на QA, но безуспешно. Понятия не имею, что это могло быть.
Ошибка могла указывать на что угодно: от недостаточно специфицированного или неисправного оборудования (у нас только что была эта ошибка, и это был плохой кабель, идущий к PowerVault) до неправильно настроенной базы данных или конфигурации RAID.
Задержка ввода-вывода происходит в вашем файле журнала транзакций, который, как я предполагаю, находится в том же массиве, что и ваши базы данных. Вы должны увидеть преимущество, настроив два небольших диска как отдельный массив RAID-1 (зеркальный) и переместив туда журнал транзакций.
Очень просто. Это то, что он говорит:
SQL Server обнаружил 3 случая запросов ввода-вывода, для выполнения которых требовалось более 15 секунд.
SQL Server делает запрос ввода-вывода, выполнение которого занимает более 10 секунд. Обычно это должно занимать - для высокопроизводительного сервера баз данных - 2-3 мс, а не 15 000 или больше.
Путь к файлу:
[C: \ Program Files \ Microsoft SQL
Это заставляет меня предположить, что у вас нет производственного сервера, но кто-то, кто понятия не имел, как установить sql-сервер, заказал оборудование и настроил его. В результате ваши файлы базы данных живут на (медленном?) Системном диске, а не имеют настройки, оптимизированные для ввода-вывода, и ваш диск просто полностью перекрывается. Случается, когда вы запускаете высокопроизводительные базы данных на системном диске вместо оптимизированной структуры диска. Серверы баз данных сложно настроить с точки зрения оборудования.
Только решения:
Как пример, у меня здесь база данных меньшего размера (800 ГБ), и я использую 8 Velociraptors в качестве RAID 10 для файла данных и 2x120 ГБ SSD для журналов, что хорошо отделяет ввод-вывод журнала от ввода-вывода базы данных. И я не доволен вводом-выводом диска с файлом базы данных и скоро обновлюсь с кешами SSD.
НИЧЕГО (кроме очень редко используемых системных баз данных) не существует на C.
Тот факт, что вы не упоминаете схему своего диска в вопросе, связанном с вводом-выводом, заставляет меня предположить, что вы не знаете, как работают базы данных с вводом-выводом, и кто-то только что заказал дешевый сервер dell, думая, что «у него есть xeon, поэтому он быстрый», в то время как базы данных часто не заботятся о процессоре и полностью привязаны к вводу-выводу.