Як правильно налаштувати ms sql сервер для роботи з 1с

Шляхом проб і помилок, шляхом тестування на 200+ живих користувачів, консультацій з десятками Гуру і пошуку по сотням офіційних і не дуже сайтів був розроблений оптимальний варіант налаштувань MS SQL для цілодобової роботи більше, ніж 200 користувачів одночасно.

1. Налаштування сервера

По-перше нам потрібен тільки сервер, інші служби, які до нього ставляться і можливо хтось ними користується, нам тільки гальмують роботу. Зупиняємо і відключаємо такі служби, як FullText Search (у 1С власний механізм повнотекстового пошуку), I ntegration S ervices і іже з ними.

SQL Server (sqlservr.exe)

SQL Server Agent (SQLAGENT.exe)

SQL Writer (sqlwriter.exe)

Далі у властивостях сервера, через Server Management Studio встановлюємо:

Як правильно налаштувати ms sql сервер для роботи з 1с

Максимально відведений серверу призначається кількість пам'яті з розрахунку:

Це необхідно для того, щоб sql сервер розраховував на цей обсяг і чистив пам'ять завчасно, тому що якщо поставити необмежений обсяг, і сервер спробує отримати пам'ять, якої немає, він починає міцно замислюватися над своєю поведінкою і вкрай повільно відповідати на запити.

Як правильно налаштувати ms sql сервер для роботи з 1с

Максимальна кількість потоків (Maximum worker threads) ставимо 2048, за замовчуванням стоїть 0 і з таким значенням сервер не створює більше 255 потоків, а цього йому не вистачає (встановлено дослідним шляхом, що при великій кількості одночасних транзакцій сервер реально починає швидше працювати). Також виставляємо галку підвищеного пріоритету сервера (Boost priority).

Власне з глобальними настройками все. Тепер переходимо до налаштувань робочої бази даних (або декількох баз, якщо таке має місце бути).

2. Налаштування робочої бази даних

Заходимо в властивості потрібної нам бази даних:

Як правильно налаштувати ms sql сервер для роботи з 1с

Якщо база ще не розгорнута з .dt файлу, і ви знаєте приблизний її розмір, то первинного файлу розмір ініціалізації краще відразу вказати> = розміру бази, але це справа смаку, він все одно виросте при розгортці. А ось Автозбільшення розміру треба обов'язково вказати приблизно по 200 МБ на базу і по 50 МБ на лог, тому що значення за замовчуванням - зростання по 1 МБ і по 10% дуже сильно гальмують роботу сервера, коли йому за будь-якої 3й транзакції треба файл збільшувати. Також, якщо не іспользуетет RAID масив, то зберігання файлу бази і файлу лога краще вказати на різних фізичних дисках. Ну і обмежити лог 2-4 ГБ, щоб сильно не пух.

Інші налаштування як на скрішоте:

Як правильно налаштувати ms sql сервер для роботи з 1с

З настройками бази все. Залишилося налаштувати регламентні завдання.

3. Налаштування регламентних завдань

Спочатку створюємо Maintenance Plan в розділі Management:

Як правильно налаштувати ms sql сервер для роботи з 1с

Дефрагментацію індексів і збір статистики потрібно виробляти щодня, тому що якщо фраґментованість індексів> 25%, це різко знижує продуктивність сервера. Дефрагментація і оновлення статистики робиться швидко і не вимагає відключення користувачів. Наскільки ваші індекси фрагментовані можна подивитися дуже хорошою і багатофункціональної обробкою Гильова Вячаслава, з назвою Lock1C.epf, і яку він прибрав зі свого сайту через наїзд 1С-ників за порушення якогось пункту ліцензійного с. але хорошого адміну гугл завжди на допомогу J. Також бажано робити повну переіндексацію, з блокуванням БД, хоча б раз на тиждень, природно після повної переиндексации відразу ж робиться дефрагментація індексів і оновлення статистики.

Налаштування бекапа засобами SQL.

Ту все просто, додаємо 2 нових завдання Agent'у:

Full BackUp, з періодичністю 1 раз на добу і 2ма кроками T-SQL скриптів:

1. BACKUP DATABASE [<ИмяБД>] TO DISK = N '<ПутьКПапке>Backup<ИмяБД>.bak 'WITH NOFORMAT, INIT, NAME = N'<ИмяБД>-Full Database Backup ', SKIP, NOREWIND, NOUNLOAD, STATS = 10

2. USE [ <ИмяБД> ]

DBCC SHRINKFILE (N '<ИмяБД>_log '. 0)

І друге завдання з періодичністю 1 раз в 1-2 години Differencial BackUp і з одним T-SQL скриптом:

BACKUP DATABASE [<ИмяБД>] TO DISK = N '<ПутьКПапке>Backup<ИмяБД>Diff.bak 'WITH DIFFERENTIAL. NOFORMAT, INIT, NAME = N '<ИмяБД>-Differential Database Backup ', SKIP, NOREWIND, NOUNLOAD, STATS = 10

Такий бекап робиться, навіть при активній роботі користувачів, 4-6 хвилин і практично не позначається на швидкодії сервера.

Так, і додамо очищення процедурного після переиндексации (раз на тиждень), в завдання, ктор у же з'явилося в агента після збереження Maintenance Plan додаємо ще один крок:

Не забувши поміняти в налаштуваннях першого кроку після завершення не виходити, а перейти до наступного. Спс gilv за підказку.

Схожі статті