Настройка MSSQL под 1С
Настройки экземпляра SQL Server
Max Server Memory
Обязательно ограничить память SQL Server.
Причина:
- SQL Server по умолчанию может занять практически всю доступную память.
- Необходимо оставить память для ОС, служб 1С (ragent, rmngr, rphost), резервного копирования и других сервисов.
Рекомендация:
- Не оставлять значение по умолчанию.
- Выделять SQL Server не более 70–85% оперативной памяти сервера.
- На серверах, где размещены и SQL Server, и сервер 1С, оставлять дополнительный запас памяти для процессов 1С.
MAXDOP
Рекомендация:
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;
Причина:
- Большинство нагрузок 1С являются OLTP-нагрузками.
- Параллельные планы часто создают дополнительную конкуренцию за CPU.
- MAXDOP = 1 обычно обеспечивает более стабильную производительность.
Cost Threshold for Parallelism
Рекомендация:
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;
Причина:
- Исключает попытки распараллеливания небольших запросов.
- Особенно полезно, если MAXDOP впоследствии будет увеличен.
Optimize for Ad Hoc Workloads
Рекомендация:
EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;
Причина:
- 1С генерирует большое количество динамических SQL-запросов.
- Уменьшается засорение Plan Cache одноразовыми планами выполнения.
Backup Compression
Рекомендация:
EXEC sp_configure 'backup compression default', 1;
RECONFIGURE;
Причина:
- Снижает требования к дисковой подсистеме.
- Уменьшает размер резервных копий.
Remote Admin Connections
Рекомендация:
EXEC sp_configure 'remote admin connections', 1;
RECONFIGURE;
Причина:
- Позволяет подключиться через DAC при аварийных ситуациях.
Настройка TempDB
Количество файлов
Рекомендация:
- От 1 до 8 одинаковых файлов данных.
- Обычно количество файлов равно количеству логических CPU, но не более 8.
- При отсутствии проблем допустимо начинать с 4 файлов.
Причина:
- Снижается конкуренция за служебные страницы TempDB.
Размер файлов
Рекомендация:
- Все файлы данных должны иметь одинаковый размер.
- Все файлы должны иметь одинаковый FILEGROWTH.
Причина:
- SQL Server равномерно распределяет нагрузку между файлами.
Авторасширение
Рекомендация:
- Использовать фиксированный размер роста.
- Не использовать процентный рост.
Пример:
FILEGROWTH = 512MB
Причина:
- Предсказуемое потребление дискового пространства.
- Отсутствие огромных скачков размера файлов.
Размещение TempDB
Рекомендация:
- Размещать на быстром SSD/NVMe.
- По возможности отдельно от пользовательских баз и журналов транзакций.
Причина:
- TempDB активно используется SQL Server и 1С.
Настройка баз 1С
Recovery Model
Продуктивная база:
ALTER DATABASE [ИмяБазы]
SET RECOVERY FULL;
Причина:
- Позволяет выполнять восстановление на момент времени.
Важно:
- Требуется регулярный backup журнала транзакций.
Page Verify
Рекомендация:
ALTER DATABASE [ИмяБазы]
SET PAGE_VERIFY CHECKSUM;
Причина:
- Позволяет обнаруживать повреждение страниц данных.
Статистики
Рекомендация:
ALTER DATABASE [ИмяБазы]
SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE [ИмяБазы]
SET AUTO_UPDATE_STATISTICS ON;
Причина:
- Оптимизатор SQL Server строит более качественные планы запросов.
Auto Shrink
Рекомендация:
ALTER DATABASE [ИмяБазы]
SET AUTO_SHRINK OFF;
Причина:
- Автоматическое сжатие вызывает фрагментацию и дополнительную нагрузку.
Auto Close
Рекомендация:
ALTER DATABASE [ИмяБазы]
SET AUTO_CLOSE OFF;
Причина:
- Исключаются лишние операции открытия и закрытия базы.
Рост файлов базы
Рекомендация:
- Использовать фиксированный FILEGROWTH.
- Не использовать процентный рост.
Пример:
FILEGROWTH = 1024MB
Причина:
- Более предсказуемая работа файловой системы.
- Меньше фрагментация файлов БД.
Дополнительные рекомендации
Lock Pages In Memory
Рекомендуется включать для службы SQL Server.
Причина:
- Предотвращает вытеснение буферного кэша SQL Server операционной системой.
Антивирус
Исключить из проверки:
- MDF
- NDF
- LDF
- BAK
- TRN
- каталоги данных SQL Server
Причина:
- Исключение лишней нагрузки на дисковую подсистему.
Обслуживание
Необходимо регулярно выполнять:
- Backup Full
- Backup Differential
- Backup Log
- Обновление статистик
- Контроль фрагментации индексов
- Проверку целостности (DBCC CHECKDB)
Что обычно проверяю первым при проблемах 1С
- Ожидания SQL Server (Wait Statistics).
- Размер и загрузку TempDB.
- Блокировки.
- Настройки памяти SQL Server.
- План выполнения проблемного запроса.
- Фрагментацию индексов.
- Актуальность статистик.
- Скорость дисковой подсистемы.