A empresa em que trabalho possui alguns bancos de dados SQL Server com tabelas contendo +- 500.000.000 linhas. Estamos executando as edições Enterprise do SQL Server 2008R2 e 2014.
Tipos de big data
Quando olho para os tipos de dados usados na tabela maior, vejo muitas colunas BIGINT. Examinando os dados nessas colunas com um script de Thomas Larock e fazendo o script dos valores MIN() e MAX() eu mesmo, concluí que os dados nessas colunas BIGINT podem ser facilmente ajustados em colunas INT ou mesmo SMALLINT/TINYINT. (Estou ciente de que algumas colunas podem precisar do intervalo de BIGINT no futuro, portanto não estou alterando cegamente todos os tipos de dados sem falar primeiro com os desenvolvedores)
Ao comparar a possível economia ao alterar os tipos de dados, parece que a tabela poderia ter a metade do tamanho atual (sem considerar índices e outras tabelas). Esses números são sem qualquer compressão de dados.
Compressão de LINHA
Na mesa grande, a compactação ROW está habilitada. Estou me perguntando qual pode ser o impacto real de 'reduzir' os tipos de dados das colunas, tendo em mente que a compactação ROW está usando apenas os bytes necessários . Por exemplo, se um valor puder ser armazenado em 1 byte, o armazenamento levará apenas 1 byte.
pergunta real
Ajudaria a reduzir os tipos de dados, de modo que a compactação ROW usasse menos recursos? Ou é salvo dizer 'porque a compactação ROW está habilitada, não há diferença entre os tipos de dados BIGINT, INT ou SMALLINT'?
Como a documentação que você já vinculou afirma, a compactação ROW usa apenas os bytes necessários. Uma vez que a compressão ROW está em uso, os ciclos de CPU usados para converter de/para int ou bigint são os mesmos: eu não me preocuparia com isso.
BTW, se você não tem certeza se int/bigint tem um impacto no tamanho do banco de dados ou não (não tem), você pode ver por si mesmo com uma reprodução rápida e suja: