Вопрос или проблема
При просмотре журналов событий Windows я вижу следующие сообщения почти непрерывно –
Запуск базы данных 'Database'.
Параллельная повторная запись начата для базы данных 'Database' с размером пула рабочих потоков [1].
Параллельная повторная запись завершена для базы данных 'Database' с размером пула рабочих потоков [1].
Эти сообщения появляются одновременно и повторяются непрерывно каждую секунду.
Может кто-то объяснить, что такое Параллельная Повторная Запись и почему она постоянно запускается и останавливается, вызывая необходимость перезапуска базы данных?
База данных используется веб-приложением ASP.NET на основе Entity Framework, работающим на IIS. Windows Server 2016 Standard и SQL Server 14.0.100 (Sql Server 2017 Express Edition).
Попробуйте установить автоматическое закрытие на false, это можно сделать в разделе параметров свойств БД.
Вот ссылка для объяснения. Кто-то прокомментировал нечто подобное в теме ниже.
https://dba.stackexchange.com/questions/239181/messages-about-parallel-redo
Ответ или решение
Параллельная переработка: Почему ваша база данных постоянно перезапускается?
Когда вы рассматриваете сообщения в журналах событий Windows, вы сталкиваетесь с периодическими записями, указывающими на запуск и shutdown параллельной переработки для вашей базы данных. Эти сообщения, как правило, выглядят так:
Starting up database 'Database'.
Parallel redo is started for database 'Database' with worker pool size [1].
Parallel redo is shutdown for database 'Database' with worker pool size [1].
Эти записи появляются часто, что может указывать на проблемы, требующие внимания. В этом посте я объясню, что такое параллельная переработка и почему она может вызывать постоянные перезапуски базы данных.
Что такое параллельная переработка?
Параллельная переработка — это функция SQL Server, которая предназначена для ускорения обработки журналов транзакций во время восстановления базы данных. Когда происходит сбой или повторный запуск SQL Server, система должна восстановить состояние базы данных, и параллельная переработка позволяет выполнять это восстановление быстрее с использованием нескольких потоков. Это особенно полезно для крупных баз данных с интенсивными операциями записи.
При использовании параллельной переработки SQL Server создаёт пул рабочих потоков, которые обрабатывают страницы данных и журналы транзакций параллельно, что значительно ускоряет процесс.
Причины повторного включения и остановки параллельной переработки
Постоянные сообщения о начале и завершении параллельной переработки могут быть симптомом одной из следующих причин:
-
Авто-закрытие базы данных: Одной из наиболее распространённых причин перезапусков базы данных является неправильная настройка параметров базы данных, когда установлено значение "Auto Close" (авто-закрытие) в "True". Это приводит к тому, что база данных закрывается после завершения всех соединений, и каждый раз, когда приложение пытается получить доступ к базе данных, она вновь открывается. Это вызывает циклы, в которых параллельная переработка активируется и затем останавливается.
Решение: Настройте параметр "Auto Close" на "False". Чтобы сделать это, выполните следующие шаги:
- Откройте SQL Server Management Studio (SSMS).
- Найдите вашу базу данных в дереве объектов.
- Щёлкните правой кнопкой мыши по базе данных и выберите "Свойства".
- Перейдите на вкладку "Опции" и найдите параметр "Auto Close".
- Установите значение "False" и сохраните изменения.
-
Недостаточная производительность ресурсов: Если во время работы базы данных наблюдается нехватка ресурсов (процессорного времени, памяти), это может привести к тому, что SQL Server не может поддерживать параллельную переработку, вызванную высокими нагрузками. Если ресурсы ограничены, это также может повлиять на краткосрочные операции параллельной переработки, вызывая их постоянное начало и завершение.
-
Конфликты транзакций: Если в базе данных происходят частые конфликты транзакций или блокировки, это может вмешиваться в работу параллельной переработки, из-за чего она становится нестабильной.
-
Всеобъемлющие или долгосрочные транзакции: Подобные операции могут влиять на нормальную работу базы данных и вызвать повторы в цикле переработки.
-
Ошибки или сбой в уже выполненных транзакциях: Если имеются ошибки в ранее выполненных транзакциях, это может привести к некорректному восстановлению состояния базы данных.
Заключение
Чтобы остановить постоянные сообщения о запуске и завершении параллельной переработки, в первую очередь проверьте, установлен ли параметр "Auto Close" в вашей базе данных на "True". Убедитесь, что ресурсы вашего сервера достаточны, и анализируйте производительность на предмет потенциальных конфликтов транзакций. Это может значительно улучшить состояние работы вашей базы данных и уменьшить количество ненужных перезапусков.
Используя приведённые рекомендации и управляя настройками вашей базы данных, вы сможете обеспечить стабильную и надёжную работу вашего приложения на ASP.NET с использованием Entity Framework. Это, в свою очередь, улучшит пользовательский опыт и снизит риск возникновения потенциальных проблем в будущем.