Сегодня у меня задачка: оптимизировать ПК с ОС Windows 10 под установку Microsoft SQL Server.
Машина не серверная, планируется её использовать как систему, на которой будет храниться зеркальная копия БД для её быстрого ввода в строй в случае сбоя основного сервера. А почему бы и нет?
Система пустая, характеристики:
- ОС: Windows 10
- Процессор: 12th Gen Intel(R) Core(TM) i5-12400F 2.50 GHz
- Оперативная память 32 ГБ
- Диск под систему: Samsung SSD 970 EVO Plus 500 Гб
- Диск под БД: WD Blue 1 ТБ — WD10EZEX
Не самый производительный вариант, но и особой нагрузки там не ожидается.
Сразу становится понятно, что RAM диск настраивать не буду, оперативной памяти недостаточно для этого, по сравнению с основным сервером, на котором 128 ГБ RAM. Так что tempdb останется на своём месте, а именно на SSD.
Приступим к остальным настройкам:
Настройка MSSQL для работы с 1С — мифы и реальность
Форматирование с размером блока 64 КБ
Рекомендуют форматировать файловую систему для БД с размером блока 64 Кб.
Стандартный размер кластера (лучше использовать это название) в файловой системе NTFS:
- ёмкость до 16 Тб — 4 килобайта
- ёмкость от 16 до 32 Тб — 8 килобайт
- ёмкость от 32 до 64 Тб — 16 килобайт
- ёмкость от 64 до 128 Тб — 32 килобайта
- ёмкость от 128 до 256 Тб — 64 килобайта
У меня диск объёмом 1 Тб, так что сейчас размер кластера стандартный: 4 КБ. Есть прекрасная возможность, пока диск не используется, переформатировать. SQL сервер ведёт себя лучше при размере кластера 64 КБ.

Power Option: High performance
Сейчас план электропитания в Windows 10 установлен в "Высокая производительность". Видимо, кто-то уже установил, этот вариант меня устроит.

Индексация файлов
Отключаем индексацию файлов на диске.

Антивирус
Нам нужно исключить диск из проверки антивирусом и внести его в исключения. А служба "Служба антивирусной программы Microsoft Defender" отключена.

Сжатие содержимого
Создам директорию для БД: D:\MSSQL\DATA. Проверяю, что сняты галки шифрования для компрессии.

MSSQL
Устанавливаю MSSQL.
Установка Microsoft SQL Server 2019
При установке ставлю галку: Grand Perform Volume Maintenance Task privilege to SQL Server Database Engine Service. Настройка влияет на файл данных. Когда файл автоматически вырастает, то новый кусок заполняется нулями, в этот момент SQL может тормозить. Instant File Initialization (IFI) позволяет отключить это зануление.

Каталоги данных оставляю по умолчанию на системном диске, потому как он SSD. В ином случае я бы установил всё на другой диск.

Для tempdb оставляю предложенные настройки: 8 файлов на SSD.

Max degree of parallelism по умолчанию равен количеству процессоров. Не нужен максимум точно, но и единицу не нужно ставить. Ставлю 8. Обычно режу до половины количества процессоров, но на данном ПК только MSSQL будет крутиться, пусть будет 8.

Память. По умолчанию сиквел жрёт всё что может, системе начинает не хватать. Нужно выделить SQL серверу строго определённое количество памяти. Выделю 20 ГБ.

Установка последнего Service Pack и Cumulative Update
После установки MSSQL нужно обновить его до последней версии. Проще всего искать обновления вместе с обновлениями Windows.
Устанавливаем обновления Windows.
Lock pages in memory
Рекомендуют установить разрешение на Lock pages in memory (блокировку страниц в памяти) для пользователя, от которого запущена служба Microsoft SQL Server. Эта политика Windows определяет, какие учетные записи могут сохранять данные в физической памяти, чтобы система не отправляла страницы данных в виртуальную память на диске.
Запускаем Local Group Policy Editor:
gpedit.mscСлева выбираем Local Computer Policy, Computer Configuration, Windows Settings, Security Settings, Local Policies, User Rights Assignment. Тыкаем в Lock pages in memory.
Видим, что политика не настроена. Можно добавить сюда пользователя, от имени которого работает SQL Server.

Настройка процессора
Настроим проц.

Флаги трассировки
- 4199 — включает исправления оптимизатора из фиксов.
- 1118 — использовать разные страницы памяти.
Проверка статусов флагов трассировки:
DBCC TRACESTATUS (1118, 4199);
GOЗапускаем SQL Server Configuration Manager. SQL Server Services. SQL Server — правой кнопкой свойства. Вкладка Startup Parameters. Добавляем -T1118 и -T4199.

Для применения потребуется перезапустить SQL сервер.
Сетевые протоколы
Протокол Named pipes необходимо отключить в SQL Server Configuration Manager.

Заключение
Пока нет никаких БД, дальше оптимизировать не могу. Первоначальные настройки выполнены.
