Tópicos Avançados de SQL Server
1. Otimização de Índices Columnstore
Conceito: Armazenamento colunar otimizado para cargas de trabalho analíticas (OLAP).
Aplicação: Ao contrário do padrão rowstore, os dados são comprimidos e agrupados por colunas.
O SQL Server utiliza um processo em background chamado Tuple Mover para compactar dados
em rowgroups assim que atingem 1.048.576 linhas.
Manutenção: É necessário monitorar a fragmentação verificando dicionários e deleted bitmaps.
Utilize ALTER INDEX REBUILD para consolidar rowgroups fragmentados.
2. Implementação de Row-Level Security (RLS)
Conceito: Controle de segurança e acesso granular executado na camada do banco de dados.
Aplicação: Baseia-se na criação de Funções de Valor de Tabela (TVFs) vinculadas a Políticas de
Segurança. O filtro de dados ocorre no núcleo do SQL Server, avaliando o contexto de execução
de quem faz a consulta.
Segurança: A política bloqueia operações de leitura e gravação não autorizadas. Recomenda-se
criar um schema isolado para essas funções.
3. Tuning de Planos de Execução
Conceito: Análise e otimização do caminho lógico gerado pelo Query Optimizer.
Aplicação: A identificação de gargalos reais deve focar em Index Scans (varreduras completas) e
Key Lookups.
Otimização: A criação de Covering Indexes (com a cláusula INCLUDE) resolve a grande maioria
dos Lookups. Evite funções em cláusulas WHERE para não inutilizar os índices existentes.
4. Arquitetura de TempDB
Conceito: Melhoria de desempenho do banco responsável por tabelas temporárias, junções e
version store.
Aplicação: Em ambientes de alta concorrência, ocorrem gargalos de alocação de página
(PAGELATCH) com facilidade.
Otimização: Configure múltiplos arquivos de dados (.ndf) para o TempDB. Todos os arquivos
devem ter o mesmo tamanho e a mesma taxa de crescimento (autogrowth) para o correto
funcionamento do proportional fill.
5. Isolamento Snapshot (RCSI)
Conceito: Gerenciamento de Locks e Blocks entre transações concorrentes.
Aplicação: O nível READ COMMITTED gera bloqueios de leitura quando há gravações na mesma
tabela.
Otimização: A ativação do READ_COMMITTED_SNAPSHOT armazena versões anteriores no
TempDB, permitindo consultas imediatas sem bloqueio mútuo.