Шляхом проб і помилок, шляхом тестування на 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 встановлюємо:
Максимально відведений серверу призначається кількість пам'яті з розрахунку:
Це необхідно для того, щоб sql сервер розраховував на цей обсяг і чистив пам'ять завчасно, тому що якщо поставити необмежений обсяг, і сервер спробує отримати пам'ять, якої немає, він починає міцно замислюватися над своєю поведінкою і вкрай повільно відповідати на запити.
Максимальна кількість потоків (Maximum worker threads) ставимо 2048, за замовчуванням стоїть 0 і з таким значенням сервер не створює більше 255 потоків, а цього йому не вистачає (встановлено дослідним шляхом, що при великій кількості одночасних транзакцій сервер реально починає швидше працювати). Також виставляємо галку підвищеного пріоритету сервера (Boost priority).
Власне з глобальними настройками все. Тепер переходимо до налаштувань робочої бази даних (або декількох баз, якщо таке має місце бути).
2. Налаштування робочої бази даних
Заходимо в властивості потрібної нам бази даних:
Якщо база ще не розгорнута з .dt файлу, і ви знаєте приблизний її розмір, то первинного файлу розмір ініціалізації краще відразу вказати> = розміру бази, але це справа смаку, він все одно виросте при розгортці. А ось Автозбільшення розміру треба обов'язково вказати приблизно по 200 МБ на базу і по 50 МБ на лог, тому що значення за замовчуванням - зростання по 1 МБ і по 10% дуже сильно гальмують роботу сервера, коли йому за будь-якої 3й транзакції треба файл збільшувати. Також, якщо не іспользуетет RAID масив, то зберігання файлу бази і файлу лога краще вказати на різних фізичних дисках. Ну і обмежити лог 2-4 ГБ, щоб сильно не пух.
Інші налаштування як на скрішоте:
З настройками бази все. Залишилося налаштувати регламентні завдання.
3. Налаштування регламентних завдань
Спочатку створюємо Maintenance Plan в розділі Management:
Дефрагментацію індексів і збір статистики потрібно виробляти щодня, тому що якщо фраґментованість індексів> 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 за підказку.