Melhores práticas de desempenho e diretrizes de configuração para o SQL Server em LinuxPerformance best practices and configuration guidelines for SQL Server on Linux

APLICA-SE A: simSQL Server (somente para o Linux) nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server (Linux only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Este artigo fornece práticas recomendadas e recomendações para maximizar o desempenho de aplicativos de banco de dados que se conectam ao SQL Server em Linux.This article provides best practices and recommendations to maximize performance for database applications that connect to SQL Server on Linux. Estas recomendações são específicas para a execução na plataforma Linux.These recommendations are specific to running on the Linux platform. Todas as recomendações normais para o SQL Server, tais como design de índice, ainda se aplicam.All normal SQL Server recommendations, such as index design, still apply.

As diretrizes a seguir contêm recomendações para configurar o SQL Server e o sistema operacional Linux.The following guidelines contain recommendations for configuring both SQL Server and the Linux operating system.

Configuração do SQL ServerSQL Server configuration

É recomendável executar as tarefas de configuração a seguir depois de instalar o SQL Server em Linux para obter o melhor desempenho para o aplicativo.It is recommended to perform the following configuration tasks after you install SQL Server on Linux to achieve best performance for your application.

Práticas recomendadasBest practices

  • Usar afinidade do processador para nó e/ou CPUsUse PROCESS AFFINITY for Node and/or CPUs

    É recomendável usar ALTER SERVER CONFIGURATION para definir PROCESS AFFINITY para todos os NUMANODEs e/ou CPUs que você está usando para o SQL Server (que normalmente é para todos os nós e CPUs) em um sistema operacional Linux.It is recommended to use ALTER SERVER CONFIGURATION to set PROCESS AFFINITY for all the NUMANODEs and/or CPUs you are using for SQL Server (which is typically for all NODEs and CPUs) on a Linux Operating System. A afinidade do processador ajuda a manter eficiente o comportamento do agendamento do Linux e do SQL.Processor affinity helps maintain efficient Linux and SQL Scheduling behavior. O uso da opção NUMANODE é o método mais simples.Using the NUMANODE option is the simplest method. Observe que você deve usar a afinidade de processo mesmo que você tenha apenas um único nó NUMA no computador.Note, you should use PROCESS AFFINITY even if you have only a single NUMA Node on your computer. Consulte a documentação Alterar a configuração do servidor para obter mais informações sobre como definir a afinidade de processo.See the ALTER SERVER CONFIGURATION documentation for more information on how to set PROCESS AFFINITY.

  • Configurar vários arquivos de dados tempdbConfigure multiple tempdb data files

    Já que uma instalação do SQL Server em Linux não oferece uma opção para configurar vários arquivos tempdb, recomendamos que você considere criar vários arquivos de dados tempdb após a instalação.Because a SQL Server on Linux installation does not offer an option to configure multiple tempdb files, we recommend that you consider creating multiple tempdb data files after installation. Para obter mais informações, confira as diretrizes no artigo Recomendações para reduzir a contenção de alocação no banco de dados tempdb do SQL Server.For more information, see the guidance in the article, Recommendations to reduce allocation contention in SQL Server tempdb database.

Configuração avançadaAdvanced Configuration

As recomendações a seguir são definições de configuração opcionais que você pode optar por executar após a instalação do SQL Server em Linux.The following recommendations are optional configuration settings that you may choose to perform after installation of SQL Server on Linux. Essas opções se baseiam nos requisitos de carga de trabalho e na configuração do sistema operacional Linux.These choices are based on the requirements of your workload and configuration of your Linux Operating System.

  • Definir um limite de memória com mssql-confSet a memory limit with mssql-conf

    Para garantir que haja memória física livre suficiente para o sistema operacional Linux, o processo de SQL Server usa apenas 80% da RAM física por padrão.In order to ensure there is enough free physical memory for the Linux Operating System, the SQL Server process uses only 80% of the physical RAM by default. Para alguns sistemas que têm grande quantidade de RAM física, 20% pode ser um número significativo.For some systems which large amount of physical RAM, 20% might be a significant number. Por exemplo, em um sistema com 1 TB de RAM, a configuração padrão deixaria cerca de 200 GB de RAM não usada.For example, on a system with 1 TB of RAM, the default setting would leave around 200 GB of RAM unused. Nessa situação, talvez você queira configurar o limite de memória para um valor mais alto.In this situation, you might want to configure the memory limit to a higher value. Consulte a documentação sobre a ferramenta mssql-conf e a configuração memory.memorylimitmb que controla a memória visível para o SQL Server (em unidades de MB).See the documentation on the mssql-conf tool and the memory.memorylimitmb setting that controls the memory visible to SQL Server (in units of MB).

    Ao alterar essa configuração, tenha cuidado para não definir esse valor muito alto.When changing this setting, be careful not to set this value too high. Se você não deixar memória suficiente, poderá ter problemas com o sistema operacional Linux e outros aplicativos do Linux.If you do not leave enough memory, you could experience problems with the Linux Operating System and other Linux applications.

Configuração do sistema operacional LinuxLinux OS Configuration

Considere o uso das seguintes definições de configuração do sistema operacional Linux para experimentar o melhor desempenho para uma instalação do SQL Server.Consider using the following Linux Operating System configuration settings to experience the best performance for a SQL Server Installation.

Configurações de kernel para alto desempenhoKernel settings for high performance

Essas são as configurações recomendadas do sistema operacional Linux relacionadas ao alto desempenho e à taxa de transferência para uma instalação do SQL Server.These are the recommended Linux Operating System settings related to high performance and throughput for a SQL Server installation. Confira a documentação do sistema operacional Linux para obter o processo de definição dessas configurações.See your Linux Operating System documentation for the process to configure these settings.

Observação

Para usuários do RHEL (Red Hat Enterprise Linux), o perfil de desempenho de taxa de transferência definirá essas configurações automaticamente (exceto para C-States).For Red Hat Enterprise Linux (RHEL) users, the throughput-performance profile will configure these settings automatically (except for C-States).

A tabela a seguir fornece recomendações para as configurações de CPU:The following table provides recommendations for CPU settings:

ConfiguraçãoSetting ValorValue Mais informaçõesMore information
Administrador de frequência de CPUCPU frequency governor desempenhoperformance Confira o comando cpupowerSee the cpupower command
ENERGY_PERF_BIASENERGY_PERF_BIAS desempenhoperformance Confira o comando x86_energy_perf_policySee the x86_energy_perf_policy command
min_perf_pctmin_perf_pct 100100 Confira a documentação sobre o Intel p-stateSee your documentation on intel p-state
C-StatesC-States Somente C1C1 only Confira a documentação do Linux ou do sistema sobre como garantir que os C-States sejam definidos apenas como C1See your Linux or system documentation on how to ensure C-States is set to C1 only

A tabela a seguir fornece recomendações para as configurações de disco:The following table provides recommendations for disk settings:

ConfiguraçãoSetting ValorValue Mais informaçõesMore information
leitura antecipada de discodisk readahead 40964096 Confira o comando blockdevSee the blockdev command
configurações de sysctlsysctl settings kernel.sched_min_granularity_ns = 10000000kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000kernel.sched_wakeup_granularity_ns = 15000000
vm.dirty_ratio = 40vm.dirty_ratio = 40
vm.dirty_background_ratio = 10vm.dirty_background_ratio = 10
vm.swappiness = 10vm.swappiness = 10
Confira o comando sysctlSee the sysctl command

Configuração do kernel para balanceamento automático NUMA de vários nós para sistemas NUMAKernel setting auto numa balancing for multi-node NUMA systems

Se você instalar o SQL Server em um sistema NUMA de vários nós, a configuração de kernel kernel.numa_balancing a seguir será habilitada por padrão.If you install SQL Server on a multi-node NUMA systems, the following kernel.numa_balancing kernel setting is enabled by default. Para permitir que o SQL Server opere com eficiência máxima em um sistema NUMA, desabilite o balanceamento automático NUMA em um sistema NUMA de vários nós:To allow SQL Server to operate at maximum efficiency on a NUMA system, disable auto numa balancing on a multi-node NUMA system:

sysctl -w kernel.numa_balancing=0

Configurações de kernel para espaço de endereço virtualKernel settings for Virtual Address Space

A configuração padrão de vm.max_map_count (que é 65536) pode não ser alta o suficiente para uma instalação do SQL Server.The default setting of vm.max_map_count (which is 65536) may not be high enough for a SQL Server installation. Altere esse valor (que é um limite superior) para 256K.Change this value (which is an upper limit) to 256K.

sysctl -w vm.max_map_count=262144

Desabilitar data/hora do último acesso em sistemas de arquivos para arquivos de log e dados do SQL ServerDisable last accessed date/time on file systems for SQL Server data and log files

Use o atributo noatime com qualquer sistema de arquivos usado para armazenar arquivos de log e dados do SQL Server.Use the noatime attribute with any file system that is used to store SQL Server data and log files. Confira a documentação do Linux sobre como definir esse atributo.Refer to your Linux documentation on how to set this attribute.

Deixar THP (páginas enormes transparentes) habilitadasLeave Transparent Huge Pages (THP) enabled

A maioria das instalações do Linux deve ter essa opção ativada por padrão.Most Linux installations should have this option on by default. Para a experiência de desempenho mais consistente, recomendamos deixar essa opção de configuração habilitada.We recommend for the most consistent performance experience to leave this configuration option enabled.

swapfileswapfile

Verifique se você tem um swapfile configurado corretamente para evitar quaisquer problemas de memória insuficiente.Ensure you have a properly configured swapfile to avoid any out of memory issues. Consulte a documentação do Linux para saber como criar e dimensionar corretamente um swapfile.Consult your Linux documentation for how to create and properly size a swapfile.

Máquinas virtuais e memória dinâmicaVirtual Machines and Dynamic Memory

Se você está executando o SQL Server em Linux em uma máquina virtual, verifique se você selecionou as opções para corrigir a quantidade de memória reservada para a máquina virtual.If you are running SQL Server on Linux in a virtual machine, ensure you select options to fix the amount of memory reserved for the virtual machine. Não use recursos como a Memória Dinâmica Hyper-V.Do not use features like Hyper-V Dynamic Memory.

Próximas etapasNext steps

Para saber mais sobre recursos do SQL Server que melhoram o desempenho, confira Introdução aos recursos de desempenho.To learn more about SQL Server features that improve performance, see Get started with Performance features.

Para saber mais sobre o SQL Server em Linux, confira Visão geral do SQL Server em Linux.For more information about SQL Server on Linux, see Overview of SQL Server on Linux.