Alguém conhece uma ferramenta como esta página https://columnscore.com/ onde se pode determinar se uma tabela é uma boa candidata para compactação de linha ou página.
Também estou tentando entender os benefícios da compressão. Eu tenho lido sobre isso, mas ainda tenho essas dúvidas.
- A compactação fará com que mais 8 KB caibam no cache de buffer? Quando os dados se tornam descompactados, ou seja, em um select?
- os backups ficarão mais rápidos?
- A razão para a compressão dos anúncios é sobrecarga da CPU porque, por exemplo, as inserções precisam ser compactadas antes da inserção?
- Existe alguma boa razão para compactar tabelas sem investigar como as tabelas estão sendo usadas (ou seja, estáticas versus voláteis).
Um colega começou a compactar muitas tabelas (página). Não conheço a análise por trás dessa decisão. Eu sei que às vezes temos esperas de semáforos de recursos durante alguns horários de pico. Na verdade, acho que ele não sabe o que está fazendo. Eu posso ver que nossas esperas de rendimento do agendador sos aumentaram um pouco.
Eu acho que a compressão está causando mais danos e parece que as tarefas de manutenção ultrapassam mais agora (por exemplo, backups, checkdb...).
As recomendações de ferramentas estão fora do tópico aqui, principalmente porque pode haver qualquer número de respostas e elas tendem a ficar desatualizadas rapidamente. Dito isso, o SQL Server fornece um procedimento interno para estimar a economia de espaço da compactação, arquivos
sp_estimate_data_compression_savings
. Ele não tenta prever se a compactação será uma boa opção para a carga de trabalho como um todo, apenas se a economia de espaço pode ser esperada ou não. É essencialmente um wrapper em tornoTABLESAMPLE
de , criando um novo objeto e extrapolando o tamanho completo a partir daí.Se a compressão for eficaz, sim. As páginas permanecem compactadas no buffer pool.
Os dados são descompactados quando um componente do SQL Server acima do nível do mecanismo de armazenamento precisa trabalhar com os dados. Por exemplo, um Index Scan apresentará dados descompactados para um operador Filter em um plano de execução.
O rastreamento de pilha abaixo mostra um exemplo de descompactação antes de apresentar dados ao processador de consulta (código do mecanismo de armazenamento destacado):
Você pode ler mais sobre isso em Estratégias de compressão de Sunil Agarwal (parte da equipe de engenharia do SQL Server na época).
Muitas pessoas relataram que sim. A intuição é que dados compactados em armazenamento persistente requerem menos E/Ss para serem lidos para backup. Se sua instância normalmente estiver vinculada à CPU, você poderá ver backups mais lentos, pois o trabalho extra do processador necessário para a descompactação supera a aceleração de E/S.
Certamente a compactação adiciona sobrecarga de CPU, mas isso geralmente é gerenciável porque os algoritmos de compactação de dados foram escolhidos pela eficiência e não pelo tamanho final. Observe que a compactação de dados e a compactação de backup são muito diferentes. A compactação de backup é baseada em uma variante da compactação gzip e destina-se a obter uma redução de tamanho muito boa às custas de mais uso da CPU.
Cada inserção e atualização incorrerá em pelo menos alguma sobrecarga de compactação de dados. Isso é mais perceptível com a
PAGE
compressão. O SQL Server também pode tentar recompactar uma página inteira depois que um determinado número de modificações tiver sido feito nessa página.Isso é subjetivo e depende de suas prioridades locais. Em geral, pode-se optar por compactar sem testes detalhados, onde fica claro que economias de espaço substanciais (e necessárias) serão feitas e o sistema tem bastante tempo livre do processador disponível.
Você deve discutir o raciocínio com seu colega.
Para sua primeira pergunta, existe um procedimento armazenado do sistema que você pode usar: -
sp_estimate_data_compression_savings
https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-estimate-data-compression-savings-transact-sql?view=sql-server-ver15
para suas outras perguntas
1 Como os dados são compactados, você pode inserir mais informações no mesmo tamanho de memória, os dados são descompactados quando são trocados com o aplicativo. consulte https://learn.microsoft.com/en-us/sql/relational-databases/data-compression/data-compression?view=sql-server-ver15
2 Não, provavelmente não
3 Sim
4 Sua pergunta é uma pergunta principal: Quantas coisas você pode pensar que deveria fazer sem investigação?
Você provavelmente deve conversar com seu colega se quiser descobrir por que ele fez algo, pode haver muitas razões pelas quais algumas tarefas estão sendo executadas.