Otimizar o armazenamento do banco de dados

Concluído

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

O que é o preenchimento proporcional?

Se você estivesse 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 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 os arquivos de dados tivessem dois gigabytes, você esperaria a distribuição uniforme dos dados. No entanto, se um dos seus arquivos de dados tivesse dez gigabytes e o outro tivesse um gigabyte, aproximadamente 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 de gravação intensiva do tempdb, um padrão de gravação irregular poderia causar um gargalo no arquivo maior, pois mais gravações ocorreriam lá.

Configuração de tempdb no SQL Server

O SQL Server 2016 alterou esse comportamento, detectando o número de CPUs disponíveis na instalação e configurando o número adequado de arquivos, até oito, e dimensionando os arquivos de dados uniformemente. Além disso, os comportamentos dos sinalizadores de rastreamento 1117 e 1118 são internos ao mecanismo de banco de dados, mas somente 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 seu computador.

O SQL Server usa tempdb para muito mais do que armazenar tabelas temporárias definidas pelo usuário. As tabelas de trabalho usadas para armazenar resultados de consulta intermediários, operações de classificação e o repositório 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 posicionar o tempdb no armazenamento de latência mais baixo possível e configurar corretamente seus arquivos de dados.

Antes do SQL Server 2016, o tempdb usava como padrão ter apenas um arquivo de dados. Esse único arquivo significava que podia haver contenção para vários processos tentando acessar páginas do sistema do banco de dados tempdb. Uma solução comum para esse problema de contenção era habilitar o sinalizador de rastreamento 1118, o que mudou a forma de alocar as extensões. Outra recomendação comum de melhores práticas era 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, também era importante garantir que esses arquivos tivessem o mesmo tamanho e aumentassem à mesma taxa. Para dar suporte a esse número, os DBAs usavam o sinalizador de rastreamento 1117, o que forçava todos os bancos de dados com vários arquivos a aumentá-los à mesma taxa.