Otimize o armazenamento do banco de dados

Concluído

Para otimizar o armazenamento do banco de dados, você deve considerar o preenchimento proporcional e a configuração tempdb.

O que é preenchimento proporcional?

Se você estiver inserindo um gigabyte de dados em um banco de dados do SQL Server com dois arquivos de dados, esperaria que o tamanho de cada um dos seus arquivos de dados aumentasse em aproximadamente 512 megabytes. No entanto, esse crescimento igual não é necessariamente o caso, pois o SQL Server inserirá dados em arquivos de dados em volumes diferentes com base no tamanho do arquivo de dados. No exemplo acima, se seus arquivos de dados tivessem dois gigabytes de tamanho, você esperaria a distribuição uniforme dos dados. No entanto, se um dos seus arquivos de dados fosse de 10 gigabytes, e o outro fosse um gigabyte, cerca de 900 MB iriam para o arquivo de dez gigabytes e 100 MB para o arquivo de um gigabyte. Embora esse comportamento ocorra em qualquer banco de dados, com a natureza intensiva de gravação do tempdb, um padrão de gravação irregular pode causar um afunilamento no arquivo maior, já que mais gravações aconteceriam lá.

Configuração do Tempdb no SQL Server

O SQL Server 2016 alterou esse comportamento, detetando o número de CPUs disponíveis na instalação, configurando o número adequado de arquivos, até 8, e dimensionando os arquivos de dados uniformemente. Além disso, os comportamentos dos sinalizadores de rastreamento 1117 e 1118 são incorporados ao mecanismo de banco de dados, mas apenas para tempdb. Para cargas de trabalho pesadas de tempdb, pode haver benefícios em aumentar o número de arquivos tempdb além de oito, para o número de CPUs em sua máquina.

O SQL Server usa tempdb para muito mais do que armazenar tabelas temporárias definidas pelo usuário. Tabelas de trabalho que são usadas para armazenar resultados de consulta intermediários, operações de classificação e o armazenamento de versão para controle de versão de linha estão entre apenas alguns dos usos para tempdb. Devido a essa utilização, é importante colocar o tempdb no armazenamento de menor latência possível e configurar corretamente seus arquivos de dados.

Antes do SQL Server 2016, o tempdb tinha como padrão ter apenas um arquivo de dados. Esse único arquivo significava que poderia haver contenção para vários processos tentando acessar páginas do sistema do banco de dados tempdb. Uma solução comum para este problema de contenção foi habilitar a bandeira de rastreamento 1118, que mudou a forma como as extensões foram alocadas. Outra recomendação comum de práticas recomendadas foi criar vários arquivos de dados tempdb. Como o SQL Server usa um algoritmo de preenchimento proporcional para bancos de dados com vários arquivos de dados, também era importante garantir que esses arquivos tivessem o mesmo tamanho e crescessem na mesma taxa. Para dar suporte a isso, muitos DBAs usaram o sinalizador de rastreamento 1117, que forçou todos os bancos de dados com vários arquivos de dados a aumentá-los na mesma taxa.