Ideia central
Microsoft SQL Server é um SGBD relacional desenvolvido pela Microsoft, amplamente usado em ambientes corporativos Windows e Azure. Combina engine relacional robusta com funcionalidades de BI (SSAS, SSRS, SSIS), alta disponibilidade nativa e integração profunda com o ecossistema Microsoft.
Edições principais
| Edição | Público-alvo | Limites notáveis |
|---|---|---|
| Express | Desenvolvimento, pequenas apps | 10 GB por banco, 1 GB RAM, 1 socket CPU |
| Developer | Desenvolvimento / testes | Sem limites, mas não pode ir pra produção |
| Standard | Apps mid-tier, PMEs | 128 GB RAM, 4 sockets |
| Enterprise | Missão crítica, datawarehouses | Sem limites, todos os recursos |
| Azure SQL | Cloud managed (PaaS) | Sem infraestrutura para gerenciar |
Arquitetura interna
┌───────────────────────────────────────────────────┐
│ SQL Server Engine │
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Relational Engine │ │
│ │ Parser → Algebrizer → Optimizer → Executor │ │
│ └──────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Storage Engine │ │
│ │ Buffer Pool | Lock Manager | Log Manager │ │
│ └──────────────────────────────────────────────┘ │
│ │
│ ┌────────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Data Files │ │ Log File │ │ TempDB │ │
│ │ (.mdf/.ndf)│ │ (.ldf) │ │ │ │
│ └────────────┘ └──────────┘ └───────────────┘ │
└───────────────────────────────────────────────────┘
- Relational Engine: recebe queries T-SQL, otimiza e gera plano de execução
- Storage Engine: gerencia páginas de dados (8KB cada), buffer pool em memória, e o transaction log
- Buffer Pool: cache de páginas de dados em memória RAM, o fator mais impactante em performance
- TempDB: banco compartilhado para tabelas temporárias, operações de sort, worktables, gargalo frequente
Arquivos de um banco de dados
| Extensão | Tipo | Função |
|---|---|---|
.mdf | Primary data file | Arquivo de dados principal |
.ndf | Secondary data | Arquivos adicionais (filegroups extras) |
.ldf | Log file | Transaction log: registro sequencial de mudanças |
Recovery Models
Define como o transaction log é gerenciado e o que pode ser recuperado:
| Modelo | Log truncation | Backup de log | Point-in-time recovery |
|---|---|---|---|
| SIMPLE | Automático (checkpoint) | Não | Não |
| FULL | Apenas após backup de log | Sim | Sim |
| BULK-LOGGED | Após backup de log | Sim | Parcial |
Use FULL em produção quando point-in-time recovery é necessário. SIMPLE é aceitável para ambientes de dev/test ou bancos que podem ser recriados.
Funcionalidades-chave
- Always On Availability Groups: HA e DR com réplicas síncronas/assíncronas
- Columnstore Index: índices colunares para analytics e DW, com compressão massiva e queries 10-100x mais rápidas
- In-Memory OLTP (Hekaton): tabelas e stored procedures otimizadas para memória
- Row-Level Security: controle de acesso a nível de linha
- Dynamic Data Masking: mascaramento de dados sensíveis para usuários não-privilegiados
- Temporal Tables: histórico automático de alterações em linhas
T-SQL: extensões proprietárias do SQL Server
SQL Server usa Transact-SQL (T-SQL), dialeto da Microsoft com extensões como:
TOP Nem vez deLIMITIDENTITYpara auto-incrementISNULL(),COALESCE(),TRY_CAST()- CTEs com
WITH PIVOT/UNPIVOT- Variáveis com
DECLARE @var INT - Stored procedures, functions, triggers
Conexões
- db-relacional - Fundamentos do modelo relacional
- db-tipos-de-bancos-de-dados - SQL Server no contexto dos tipos de banco
- sqlserver-administracao - Administração do SQL Server
- sqlserver-boas-praticas - Boas práticas de uso
- sqlserver-ferramentas - Ferramentas do ecossistema
- sqlserver-tuning-queries - Otimização de queries