PERFORMANCE: Experiência necessária: Otimização e Tuning de

Propaganda
PERFORMANCE:
Experiência necessária:

Otimização e Tuning de Query
1. O que é SARG (pronuncia-se: "sargui") ?
a. Palavras-chaves: performance, query, índices, filtros, condição "where"
b. Resposta: Search Arguments - corresponde às condições necessárias para utilizar um
argumento em uma busca rápida com o auxílio de índices.
c. Follow-up questions:
i.
Dê exemplos (Resp: qualquer comparação com os operadores matemáticos < , > ou = )
ii.
Por que a função DATEDIFF impede o SARG? (Resp: função impede o SARG)
2. O que é uma estrutura HEAP (pronuncia-se: "ripi")?
a. Palavras-chaves: tabela, clustered, índice
b. Resposta: Tabela sem clustered index (índice clusterizado)
c. Follow-up questions:
i.
Qual a diferença entre um "Table Scan" e um "CLUSTERED Index Scan" em
desempenho? (Resp: nenhuma)
ii.
Qual a recomendação para a escolha de chave de um índice clusterizado? (Resp:
pequena, sequencial, numérica. Ex: 1, 2, 3..)
3. Qual o resultado do comando SET STATISTICS PROFILE ou SET STATISTICS XML?
a. Palavras-chaves: execution plan (plano de execução)
b. Resposta: Retorna o plano de execução de uma query (ambos realizam a mesma tarefa, mas
com resultados diferentes - PROFILE retorna o resultado no formato texto, enquanto que o
outro retorna em XML)
c. Follow-up questions:
i.
Cite 3 exemplos de operadores que são muito custosos para o SQL Server. (Resp: Hash
join, Hash match, Table Scan, Index Scan, Sort, Paralelismo)
ii.
Como se elimina uma operação de Bookmark Lookup? (Resp: covered index)

Metodologia de Análise de Performance
1. O que é um "SQL Handle"(pronuncia-se: "S-Q-L reindou") - dica: encontra-se nas DMVs?
a. Palavras-chaves: ponteiro, hexadecimal, statement, comando, DMV
b. Resposta: SQL Handle é um valor binário obtido a partir de DMV's (dm_exec_*) para
determinar o comando que está em execução.
c. Follow-up questions:
i.
Qual DMV é utilizada para identificar o plano de execução correspondente? (Resp:
sys.dm_exec_query_plan)
ii.
Qual a diferença com o "DBCC INPUTBUFFER" ? (resp: retorna uma granularidade
menor com a localização exata do comando)
2. Qual o significado de uma espera por PAGEIOLATCH (pronuncia-se: "PEIGI-AIOU-LETI") durante
a execução de uma query?
a. Palavras-chaves: Disco, páginas de dados
b. Resposta: Uma espera por disco
c. Follow-up questions:
i.
Cite uma DMV na qual se observa essa espera. (Resp: sysprocesses,
dm_exec_requests, dm_os_waiting_tasks, dm_wait_stats)
ii.
Um tempo de 1 segundo é considerado alto? (Resp: sim - o ideal seria algo de no
máximo 100 milissegundos)
3. Quais informações podem ser coletadas através do SQL Profiler Trace para auxiliar no
diagnóstico de performance?
a. Palavras-chaves: eventos, texto, duração, CPU, leituras, escritas
b. Resposta: SQL Profiler é uma ferramenta que captura os eventos que ocorrem no SQL
Server. Dentre as informações mais relevantes estão os comandos e queries executados no
servidor, dados sobre a data/hora de início e fim, os recursos consumidos (CPU, memória,
disco, leitura, escrita). Além disso, é possível capturar o plano de execução das queries.
c. Follow-up questions:
i.
Cite 3 colunas que devem ser usadas para encontra query lenta. (Resp: EventClass,
Text, StartTime, CPU, Duration, Reads, ...)
ii.
Qual a unidade da coluna Duration na interface gráfica do Profiler? (Resp:
milissegundos)
INFRA-ESTRUTURA

Manutenção do banco de dados
1. Qual a vantagem do comando ALTER INDEX REORGANIZE em relação ao ALTER INDEX REBUILD?
a. Palavras-chaves: Online, pouca fragmentação
b. Resposta: O comando REORGANIZE é online e permite o processamento concorrente.
Quando há pouca fragmentação na tabela, o comando REORGANIZE é mais rápido.
c. Follow-up questions:
i.
Qual o problema causado pelo comando DBCC SHRINKFILE? (Resp: O comando
SHRINKFILE causa fragmentação de tabela e índices)
ii.
Por que se deve evitar um FILLFACTOR de 30? (Resp: A página de dados ficaria 30%
ocupada / 70% livre, causando desperdício de espaço e aumentando o tamanho total
do índice)
2. O que acontece com um banco de dados configurado com FULL RECOVERY MODE quando nunca
se realizou "Backups de Log"?
a. Palavras-chaves: Transação, Log, Backup, erro, truncar, Simple Recovery, Point in Time,
Recovery
b. Resposta: Configurar o FULL RECOVERY sem o backup de logs não faz sentido porque não é
possível restaurar o backup usando o "Point in Time Recovery". Além disso, ocorre o
chamado estouro do Log, gerando o erro de "LOG FULL" e todos os comandos de
modificação (INSERT, DELETE, UPDATE) são cancelados.
c. Follow-up questions:
i.
Nesse cenário, qual o impacto de alterar o FULL RECOVERY para SIMPLE RECOVERY?
(Resp: nenhum e o problema é resolvido)
ii.
Dê exemplos de condições que causam LOG FULL. (Resp: transação aberta, replicação
parada)
3. O que significa um banco de dados em modo SUSPECT?
a. Palavras-chaves: recovery, transaction log, corrupção, disco, problema
b. Resposta: O modo SUSPECT significa que o banco de dados não realizou o processo de
recovery adequadamente. Esse comportamento normalmente ocorre quando há corrupção
de dados ou problemas de arquivo e/ou disco.
c. Follow-up questions:
i.
Qual o procedimento a ser executado no banco de dados para verificar sua
integridade? (Resp: DBCC CHECKDB)
ii.
Qual a função de colocar o banco de dados em modo EMERGENCY? (Resp: Forçar a
ativação do banco para extrair os dados existentes)

Storage e Cluster
1. Quais condições podem provocar um failover do cluster?
a. Palavras-chaves: nós do cluster, heartbeat, queda do serviço, travamento, isAlive,
LooksAlive, Split-brain, serviços, recursos
b. Resposta: Um cluster sofre uma ação de "fail over" quando há algum problema local na
máquina, no qual não foi possível restaurar o serviço após 3 tentativas. O failover significa
que o serviço do SQL Server será movido para o nó passivo. A comunicação entre os nós do
cluster ocorre através do sinal de heartbeat, que pode indicar o travamento da máquina. A
identificação de problemas no serviço é feita através dos mecanismos IsAlive/LooksAlive.
c. Follow-up questions:
i.
Quais são os recursos do cluster no qual o SQL Server é dependente? (Resp: Network
Name, Disks)
ii.
Qual o papel do Quorum? (Resp: Decidir quem é o owner do cluster em caso de perda
da comunicação)
2. Qual a diferença entre um RAID1 e RAID5?
a. Palavras-chaves: espelhamento, stripe, paridade
b. Resposta: RAID1 possui os dados espelhados, enquanto que o RAID5 utiliza a paridade. A
performance e custo do RAID1 é superior a do RAID5.
c. Follow-up questions:
i.
Qual a recomendação para armazenar os arquivos de Backup? Por que? (Resp: RAID5 menor custo e sem necessidade de performance)
ii.
Qual o risco de armazenar os arquivos do TEMPDB em um RAID0? (Resp: Se houver
falha nos discos, o servidor ficará indisponível)
3. Descreva a diferença entre uma "LUN" e "Conjunto de discos/Disk Array/JBOD".
a. Palavras-chaves: virtualização, controladora, RAID
b. Resposta: JBOD significa "Just a Bunch Of Disks". Corresponde aos discos físicos. LUN é uma
unidade lógica, composta pelo agrupamento dos discos em uma configuração RAID.
c. Follow-up questions:
i.
O que é Multi-Pathing? (Resp: Múltiplas rotas de comunicação ao storage/disco)
ii.
Como pode ser monitorada a performance da LUN no servidor SQL? (Resp:
Contadores do Performance Monitor (PERFMON) chamados Physical e/ou Logical
Disk)
Download