Рекомендации по производительности и конфигурации для SQL Server на Linux
Применимо к:SQL Server — Linux
В этой статье приводятся рекомендации по повышению производительности приложений баз данных, подключающихся к SQL Server на Linux. Эти рекомендации относятся именно к платформе Linux. При этом действуют все стандартные рекомендации в отношении SQL Server, например касающиеся проектирования индекса.
Ниже приводятся рекомендации по настройке SQL Server и операционной системы (ОС) Linux.
Конфигурация ОС Linux
Чтобы обеспечить максимальную производительность системы SQL Server, рекомендуется использовать приведенные ниже параметры конфигурации ОС Linux.
Рекомендации по конфигурации хранилища
Использование подсистемы хранения с соответствующей скоростью ввода-вывода, пропускной способностью и избыточностью
Подсистема хранения, в которой размещаются данные, журналы транзакций и другие связанные файлы (например, файлы контрольных точек для выполняющейся в памяти OLTP), должна легко справляться со средней и пиковой рабочей нагрузкой. Как правило, в локальных средах поставщик хранилища поддерживает соответствующую конфигурацию аппаратного RAID-массива с чередованием между несколькими дисками для обеспечения соответствующих операций ввода-вывода в секунду, пропускной способности и избыточности. Однако эта поддержка зависит от конкретного поставщика хранилища и конкретной архитектуры системы хранения.
Для сервера SQL Server на Linux, развернутого на Виртуальных машинах Azure, рекомендуется использовать программную реализацию RAID, чтобы обеспечить выполнение требований к скорости ввода-вывода и пропускной способности. При настройке SQL Server на виртуальных машинах Azure с аналогичными рекомендациями по хранилищу см. статью Конфигурация хранилища для SQL Server виртуальных машин.
Ниже приведен пример создания программного RAID-массива в Linux на Виртуальных машинах Azure. Ниже приведен пример, но следует использовать соответствующее количество дисков данных для требуемой пропускной способности и операций ввода-вывода в секунду для томов в зависимости от требований к данным, журналам транзакций и tempdb
ввода-выводам. В этом примере к виртуальной машине Azure были подключены восемь дисков данных; 4 для размещения файлов данных, 2 для журналов транзакций и 2 для рабочей нагрузки tempdb
.
# To locate the devices (for example /dev/sdc) for RAID creation, use the lsblk command
# For Data volume, using 4 devices, in RAID 5 configuration with 8KB stripes
mdadm --create --verbose /dev/md0 --level=raid5 --chunk=8K --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf
# For Log volume, using 2 devices in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md1 --level=raid10 --chunk=64K --raid-devices=2 /dev/sdg /dev/sdh
# For tempdb volume, using 2 devices in RAID 0 configuration with 64KB stripes
mdadm --create --verbose /dev/md2 --level=raid0 --chunk=64K --raid-devices=2 /dev/sdi /dev/sdj
Рекомендации по разбиению дисков на разделы и их настройке
Для SQL Server рекомендуется использовать конфигурации RAID. Размер полосы (sunit) и ширина полосы развернутой файловой системы должны соответствовать геометрии RAID. Ниже приведен пример для тома журнала в файловой системе XFS.
# Creating a log volume, using 6 devices, in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md3 --level=raid10 --chunk=64K --raid-devices=6 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
mkfs.xfs /dev/md3 -f -L log
meta-data=/dev/md3 isize=512 agcount=32, agsize=18287648 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=585204384, imaxpct=5
= sunit=16 swidth=48 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=285744, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Массив журналов представляет собой 6-дисковый RAID-10 с чередованием 64 КБ. Вы можете видеть следующее.
- Для
sunit=16 blks
16 * 4096 размер блока = 64 КБ соответствует размеру полосы. - Для
swidth=48 blks
=swidth
/sunit
3, то есть количество дисков с данными в массиве, за исключением дисков с четностью.
Рекомендации по настройке файловой системы
SQL Server поддерживает файловые системы EXT4 и XFS для размещения базы данных, журналов транзакций и дополнительных файлов, таких как файлы контрольных точек для выполняющейся в памяти OLTP. Корпорация Майкрософт рекомендует использовать файловую систему XFS для размещения файлов данных и журнала транзакций SQL Server.
# Formatting the volume with XFS filesystem
mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb
Примечание
При создании и форматировании тома XFS можно настроить файловую систему XFS так, чтобы она не учитывала регистр. В экосистеме Linux такая конфигурация применяется нечасто, но может потребоваться в целях совместимости.
Пример: mkfs.xfs /dev/md0 -f -n version=ci -L datavolume
В этом примере параметры -n version=ci
служат для настройки файловой системы XFS как не учитывающей регистр.
Рекомендации по файловой системе постоянной памяти
Для базовой файловой системы на устройствах PMEM следует настроить выделение блоков по 2 МБ. Дополнительные сведения на эту тему см. в разделе Технические вопросы.
Ограничение на открытие файла
По умолчанию ограничение на открытие файлов часто устанавливается в 1024. Для рабочей среды может потребоваться больше подключений, чем по умолчанию. Рекомендуется установить мягкое ограничение в 16 000, а жесткое — 32727. Например, в RHEL измените /etc/security/limits.d/99-mssql-server.conf
файл следующим образом:
mssql hard nofile 32727
mssql soft nofile 16000
Отключение даты и времени последнего доступа к файлам данных и журналов SQL Server в файловых системах
Чтобы обеспечить автоматическое повторное подключение дисков, подключенных к системе, после перезагрузки, их необходимо добавить в файл /etc/fstab
. Также для ссылки на диск настоятельно рекомендуется использовать в файле /etc/fstab
идентификатор UUID (глобальный уникальный идентификатор), а не просто имя устройства (например, /dev/sdc1
).
Настоятельно рекомендуется использовать атрибут с любой noatime
файловой системой, используемой для хранения SQL Server файлов данных и журналов. Сведения о задании этого атрибута см. в документации по Linux. Ниже приведен noatime
пример включения параметра для тома, подключенного к виртуальной машине Azure.
Запись точки подключения в /etc/fstab
:
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /data1 xfs rw,attr2,noatime 0 0
В приведенном выше примере UUID представляет устройство, которое можно найти с помощью команды blkid.
SQL Server и возможность принудительного доступа к модулям (FUA) в подсистеме ввода-вывода
Некоторые версии поддерживаемых дистрибутивов Linux обеспечивают поддержку подсистемы ввода-вывода FUA, которая обеспечивает устойчивость данных. SQL Server использует функцию FUA для обеспечения высокой эффективности и надежности операций ввода-вывода для SQL Server рабочих нагрузок. Дополнительные сведения о поддержке FUA дистрибутивом Linux и ее влиянии на SQL Server см. в разделе SQL Server в Linux: внутренние функции принудительного доступа к единицам (FUA).
SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5) и Red Hat Enterprise Linux 8.0 и более поздних версий поддерживают возможность FUA в подсистеме ввода-вывода. Если вы используете SQL Server 2017 (14.x) с накопительным пакетом обновления 6 (CU6) и более поздних версий, следует использовать следующую конфигурацию для высокопроизводительной и эффективной реализации операций ввода-вывода с помощью FUA SQL Server.
Используйте приведенную ниже рекомендуемую конфигурацию, если выполняются указанные ниже условия.
- Использование SQL Server 2017 (14.x) с накопительным пакетом обновления 6 и более поздних версий
- Используется дистрибутив и версия Linux, поддерживающие возможность FUA (Red Hat Enterprise Linux 8.0 или более поздней версии либо SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5))
- Подсистема хранения и (или) оборудование поддерживают возможность FUA и настроены для ее использования.
Рекомендуемая конфигурация
- Включение флага трассировки 3979 в качестве параметра запуска
- Используйте mssql-conf для настройки
control.writethrough = 1
иcontrol.alternatewritethrough = 0
.
Для почти всех остальных конфигураций, которые не соответствуют указанным выше условиям, рекомендуется приведенная ниже конфигурация.
- Включите флаг трассировки 3982 в качестве параметра запуска (который используется по умолчанию для SQL Server в экосистеме Linux), при этом убедитесь, что флаг трассировки 3979 не включен в качестве параметра запуска
- Используйте mssql-conf для настройки
control.writethrough = 1
иcontrol.alternatewritethrough = 1
.
Параметры ядра и ЦП для высокой производительности
В этом разделе приводятся рекомендованные параметры ОС Linux для обеспечения высокой производительности и пропускной способности системы SQL Server. Сведения о настройке этих параметров см. в документации по ОС Linux. Использование TuneD , как описано, помогает настроить множество ЦП и конфигураций ядра, описанных ниже.
Настройка параметров ядра с помощью TuneD
Для пользователей Red Hat Enterprise Linux (RHEL) профиль производительности TuneD настраивает некоторые параметры ядра и ЦП автоматически (за исключением состояний C). Начиная с RHEL 8.0, профиль TuneD с именем mssql
был закодирован с помощью Red Hat и предлагает более точные настройки производительности Linux для SQL Server рабочих нагрузок. Этот профиль включает профиль пропускной способности RHEL, и мы представляем его определения ниже для вашей проверки с другими дистрибутивами Linux и выпусками RHEL без этого профиля.
Для SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 и Red Hat Enterprise Linux 7.x tuned
пакет можно установить вручную. Его можно использовать для создания и настройки профиля, mssql
как описано ниже.
Предлагаемые параметры Linux с использованием профиля TuneD mssql
#
# A TuneD configuration for SQL Server on Linux
#
[main]
summary=Optimize for Microsoft SQL Server
include=throughput-performance
[cpu]
force_latency=5
[sysctl]
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.transparent_hugepages=always
# For multi-instance SQL deployments, use
# vm.transparent_hugepages=madvise
vm.max_map_count=1600000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.numa_balancing=0
#Note: If you are using Linux distributions with kernel versions greater than 4.18, please comment the following options as shown; otherwise, uncomment the following options if you are using distributions with kernel versions less than 4.18.
# kernel.sched_latency_ns = 60000000
# kernel.sched_migration_cost_ns = 500000
# kernel.sched_min_granularity_ns = 15000000
# kernel.sched_wakeup_granularity_ns = 2000000
Чтобы включить этот профиль TuneD, сохраните эти определения в файле в tuned.conf
папке /usr/lib/tuned/mssql
и включите профиль с помощью следующих команд:
chmod +x /usr/lib/tuned/mssql/tuned.conf
tuned-adm profile mssql
Проверьте, включен ли профиль, с помощью следующей команды:
tuned-adm active
или
tuned-adm list
Рекомендации в отношении параметров ЦП
В приведенной ниже таблице представлены рекомендации по параметрам ЦП.
Параметр | Значение | Дополнительные сведения |
---|---|---|
Регулятор частоты ЦП | производительность | См. описание команды cpupower |
ENERGY_PERF_BIAS | производительность | См. описание команды x86_energy_perf_policy |
min_perf_pct | 100 | См. документацию по режиму Intel p-state |
C-States | Только C1 | Сведения о том, как включить только режим C1 C-States, см. в документации по Linux или вашей системе |
Использование TuneD, как описано ранее, автоматически настраивает регулятор частоты ЦП, ENERGY_PERF_BIAS
и min_perf_pct
параметры соответствующим образом из-за профиля пропускной способности и производительности, используемого mssql
в качестве основы для профиля. Параметр C-States необходимо настроить вручную в соответствии с документацией, предоставляемой сообществом Linux или распространителем системы.
Рекомендации в отношении параметров дисков
В приведенной ниже таблице представлены рекомендации по параметрам дисков.
Параметр | Значение | Дополнительные сведения |
---|---|---|
Диск readahead |
4096 | См. описание команды blockdev |
Параметры sysctl | kernel.sched_min_granularity_ns = 15000000 kernel.sched_wakeup_granularity_ns = 2000000 vm.dirty_ratio = 80 vm.dirty_background_ratio = 3 vm.swappiness = 1 |
См. описание команды sysctl |
Описание.
vm.swappiness
: этот параметр управляет относительным весом, заданным для переключения памяти процесса среды выполнения по сравнению с кэшем файловой системы. Значение этого параметра по умолчанию — 60, то есть страницы выгружаются из памяти процесса среды выполнения и удаляются из кэша файловой системы в соотношении 60:140. Значение 1 указывает на то, что в физической памяти предпочтительнее сохранять процесс среды выполнения, а не кэш файловой системы. Так как SQL Server использует буферный пул в качестве кэша страниц данных и преимущественно выполняет запись в физическую память в обход кэша файловой системы для надежного восстановления, конфигурация с агрессивной подкачкой может быть выгодна для высокопроизводительных и выделенных серверов SQL Server. Дополнительные сведения см. в документации по параметру /proc/sys/vm/ — #swappiness.vm.dirty_*
: SQL Server доступ к файлам для записи не кешируется, что соответствует требованиям к целостности данных. Эти параметры обеспечивают высокую производительность асинхронной записи и снижают влияние операций записи с кэшированием в Linux на подсистему ввода-вывода хранилища, разрешая кэширование достаточного объема содержимого, при этом ограничивая запись на диск.kernel.sched_*
: эти значения параметров представляют текущую рекомендацию по настройке алгоритма полного планирования (CFS) в ядре Linux для повышения пропускной способности вызовов ввода-вывода сети и хранилища в отношении вытеснения и возобновления потоков между процессами.
mssql
С помощью профиля TuneD настраиваются vm.swappiness
параметры , vm.dirty_*
и kernel.sched_*
. Настройка readahead
для диска с помощью команды blockdev
производится на уровне устройства и должна выполняться вручную.
Настройка ядра автоматической балансировки NUMA для систем NUMA с несколькими узлами
При установке SQL Server в многоузловой системе NUMA по умолчанию включен следующий kernel.numa_balancing
параметр ядра. Чтобы обеспечить максимальную эффективность работы SQL Server в системе NUMA, отключите автоматическую балансировку NUMA в многоузловой системе NUMA:
sysctl -w kernel.numa_balancing=0
mssql
При использовании профиля TuneD параметр настраиваетсяkernel.numa_balancing
.
Параметры ядра для виртуального адресного пространства
Значение по умолчанию vm.max_map_count
(65536) может быть недостаточно высоким для установки SQL Server. По этой причине измените vm.max_map_count
значение по крайней мере на 262144 для развертывания SQL Server и ознакомьтесь с разделом Предлагаемые параметры Linux с помощью профиля TuneD mssql для дальнейшей настройки этих параметров ядра. Максимальное значение для vm.max_map_count равно 2147483647.
sysctl -w vm.max_map_count=1600000
mssql
При использовании профиля TuneD параметр настраиваетсяvm.max_map_count
.
Сохранение параметра Transparent Huge Pages (THP) во включенном состоянии
В большинстве систем Linux этот параметр конфигурации включен по умолчанию. Чтобы обеспечить максимально единообразную производительность, мы рекомендуем не отключать его. Однако в случае высокой активности страничной памяти в развертываниях SQL Server с несколькими экземплярами или при выполнении SQL Server с другими ресурсоемкими приложениями на сервере рекомендуется проверить производительность приложений после выполнения следующей команды:
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
Или измените mssql
профиль TuneD с помощью строки:
vm.transparent_hugepages=madvise
И сделайте mssql
профиль активным после изменения:
tuned-adm off
tuned-adm profile mssql
mssql
При использовании профиля TuneD параметр настраиваетсяtransparent_hugepage
.
Рекомендации по настройке сети
Как и в случае с хранилищем и ЦП, существуют рекомендации в отношении сети. Они приведены ниже для справки. Указанные ниже параметры доступны не для всех сетевых карт. За указаниями обратитесь к поставщику конкретной сетевой карты. Протестируйте эти настройки в среде разработки перед их применением в рабочей среде. Параметры сопровождаются примерами, а используемые команды относятся к конкретному типу и поставщику сетевой карты.
Настройка размера буфера для сетевого порта. В приведенном ниже примере сетевая карта называется eth0. Это сетевая карта Intel. Для сетевого адаптера на основе Intel рекомендуемый размер буфера составляет 4 КБ (4096). Проверьте предварительно установленные максимальные значения и выполните настройку с помощью приведенных ниже примеров команд.
#To check the pre-set maximums please run the command, example NIC name used here is:"eth0" ethtool -g eth0 #command to set both the rx (receive) and tx (transmit) buffer size to 4 KB. ethtool -G eth0 rx 4096 tx 4096 #command to check the value is properly configured is: ethtool -g eth0
Включить jumbo кадры. Перед включением jumbo-кадров убедитесь, что все сетевые коммутаторы, маршрутизаторы и все необходимые компоненты в пути сетевых пакетов между клиентами и SQL Server поддерживают jumbo-кадры. Только в этом случае включение jumbo-кадров может повысить производительность. После включения jumbo-кадров подключитесь к SQL Server и измените размер сетевого пакета на 8060 с помощью
sp_configure
, как показано ниже.#command to set jumbo frame to 9014 for a Intel NIC named eth0 is ifconfig eth0 mtu 9014 #verify the setting using the command: ip addr | grep 9014
EXEC sp_configure 'network packet size', '8060'; GO RECONFIGURE WITH OVERRIDE; GO
По умолчанию рекомендуется задать порт для объединения запросов на прерывание RX/TX. В результате доставка прерываний будет корректироваться в направлении оптимизации задержки при низкой скорости передачи пакетов или повышения пропускной способности при высокой скорости их передачи. Этот параметр может быть доступен не во всех разных сетевых инфраструктурах, поэтому просмотрите существующую сетевую инфраструктуру и убедитесь, что она поддерживается. В приведенном ниже примере сетевая карта называется eth0. Это сетевая карта Intel.
#command to set the port for adaptive RX/TX IRQ coalescing ethtool -C eth0 adaptive-rx on ethtool -C eth0 adaptive-tx on #confirm the setting using the command: ethtool -c eth0
Примечание
Для предсказуемого поведения в высокопроизводительных средах, таких как среды для тестирования производительности, отключите адаптивное объединение запросов на прерывание RX/TX, а затем задайте его вручную. Для заданий значений воспользуйтесь примерами команд для отключения объединения запросов на прерывание RX/TX.
#commands to disable adaptive RX/TX IRQ coalescing ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx off #confirm the setting using the command: ethtool -c eth0 #Let us set the rx-usecs parameter which specify how many microseconds after at least 1 packet is received before generating an interrupt, and the [irq] parameters are the corresponding delays in updating the #status when the interrupt is disabled. For Intel bases NICs below are good values to start with: ethtool -C eth0 rx-usecs 100 tx-frames-irq 512 #confirm the setting using the command: ethtool -c eth0
Мы также рекомендуем включить RSS (масштабирование на стороне получения) и по умолчанию объединить RX и TX очереди RSS. В некоторых случаях обращений в службу поддержки Майкрософт отключение RSS также приводило к повышению производительности. Протестируйте этот параметр в тестовой среде перед его применением в рабочих средах. Ниже приведен пример команды для сетевых карт Intel.
#command to get pre-set maximums ethtool -l eth0 #note the pre-set "Combined" maximum value. let's consider for this example, it is 8. #command to combine the queues with the value reported in the pre-set "Combined" maximum value: ethtool -L eth0 combined 8 #you can verify the setting using the command below ethtool -l eth0
Сходство запросов на прерывание для портов сетевой карты Чтобы добиться ожидаемой производительности путем настройки сходства запросов на прерывание, можно воспользоваться рядом важных параметров, в том числе относящихся к серверной топологии в Linux и стеку драйверов сетевой карты, а также параметрами по умолчанию и параметром irqbalance. Оптимизация параметров сходства запросов на прерывание для портов сетевой карты выполняется с учетом топологии сервера, предусматривает отключение параметра irqbalance и использование параметров конкретного поставщика сетевой карты.
Ниже приведен пример для сетевой инфраструктуры Mellanox. Дополнительные сведения см. в статье Инструменты настройки производительности для сетевых адаптеров Mellanox. Команды будут изменяться в зависимости от среды. За дополнительными инструкциями обратитесь к поставщику сетевой карты.
#disable irqbalance or get a snapshot of the IRQ settings and force the daemon to exit systemctl disable irqbalance.service #or irqbalance --oneshot #download the Mellanox mlnx tools -- see https://support.mellanox.com/s/article/MLNX2-117-2523kn #be sure, common_irq_affinity.sh is executable. if not, #chmod +x common_irq_affinity.sh #display IRQ affinity for Mellanox NIC port; e.g eth0 ./show_irq_affinity.sh eth0 #optimize for best throughput performance with a Mellanox tool ./mlnx_tune -p HIGH_THROUGHPUT #set hardware affinity to the NUMA node hosting physically the NIC and its port ./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0 #verify IRQ affinity ./show_irq_affinity.sh eth0 #add IRQ coalescing optimizations ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx off ethtool -C eth0 rx-usecs 750 tx-frames-irq 2048 #verify the settings ethtool -c eth0
После внесения указанных выше изменений проверьте скорость работы сетевой карты с помощью следующей команды:
ethtool eth0 | grep -i Speed
Дополнительная расширенная конфигурация ядра или ОС
Для обеспечения максимальной производительности ввода-вывода хранилища в Linux рекомендуется использовать планирование на основе нескольких очередей для блочных устройств. Это позволяет эффективно масштабировать производительность на блочном уровне при использовании быстрых твердотельных накопителей (SSD) и многоядерных систем. Чтобы узнать, включена ли эта функция по умолчанию в вашем дистрибутиве Linux, обратитесь к документации. В большинстве других случаев загрузка ядра с
scsi_mod.use_blk_mq=y
включает его, хотя документация по используемому дистрибутиву Linux может содержать дополнительные рекомендации по нему. Это согласуется с основным ядром Linux.Так как для развертываний SQL Server часто используются операции ввода-вывода с несколькими путими, для целевого объекта сопоставления устройств (DM) с несколькими очередями также следует настроить использование
blk-mq
инфраструктуры, включивdm_mod.use_blk_mq=y
параметр загрузки ядра. Значение по умолчанию —n
(отключено). Когда базовые устройства SCSI используютblk-mq
, этот параметр сокращает затраты на блокировку на уровне DM. Дополнительные рекомендации по настройке см. в документации по используемому дистрибутиву Linux.
Настройка файла подкачки
Во избежание проблем с нехваткой памяти правильно настройте файл подкачки. Сведения о создании файла подкачки и его правильном размере см. в документации по вашей системе Linux.
Виртуальные машины и динамическая память
Если SQL Server на Linux выполняется в виртуальной машине, настройте фиксированный размер памяти, резервируемой для виртуальной машины. Не используйте такие функции, как динамическая память Hyper-V.
Конфигурация SQL Server
Чтобы обеспечить максимальную производительность, рекомендуется выполнить описанные ниже задачи по настройке после установки SQL Server на Linux.
Рекомендации
Использование PROCESS AFFINITY для узлов и ЦП
Рекомендуется использовать
ALTER SERVER CONFIGURATION
, чтобы задатьPROCESS AFFINITY
для всехNUMANODE
процессоров и (или) ЦП, которые вы используете для SQL Server (как правило, для всех NODEs и ЦП) в ОС Linux. Соответствие процессоров помогает эффективно планировать работу Linux и SQL.NUMANODE
Использование параметра является простейшим методом. Используйте,PROCESS AFFINITY
даже если на компьютере есть только один узел NUMA. Дополнительные сведения о настройкеPROCESS AFFINITY
см. в статье ALTER SERVER CONFIGURATION .Настройка нескольких
tempdb
файлов данныхТак как установка SQL Server на Linux не позволяет настроить несколько
tempdb
файлов, рекомендуется рассмотреть возможность создания несколькихtempdb
файлов данных после установки. Дополнительные сведения см. в статье Рекомендации по сокращению состязания за выделяемые ресурсы в базе данных tempdb SQL Server.
Расширенная конфигурация
Ниже приведены рекомендации по дополнительным параметрам конфигурации, которые можно настроить после установки SQL Server на Linux. Их выбор зависит от требований рабочей нагрузки и конфигурации ОС Linux.
Настройка предельного объема памяти с помощью mssql-conf
Чтобы обеспечить достаточный объем свободной физической памяти для ОС Linux, процесс SQL Server по умолчанию использует только 80 % физического ОЗУ. В некоторых системах с большим размером ОЗУ 20 % может быть очень много. Например, в системе с 1 ТБ ОЗУ при настройке по умолчанию неиспользуемыми остаются приблизительно 200 ГБ ОЗУ. В таком случае может быть желательно установить более высокий предел памяти. См. документацию по средству mssql-conf и параметру memory.memorylimitmb, который определяет объем памяти, доступный SQL Server (в МБ).
При изменении этого параметра будьте осторожны. Не задавайте слишком большое значение. Если памяти будет недостаточно, могут возникнуть проблемы в работе ОС Linux и других приложений Linux.