TechEd Brasil 2010 – Falha Nossa
Eu e o Fabio Gentile apresentamos a palestra SUP403 - SQL Server com foco em Diagnóstico de Desempenho. Por ser o último horário do último dia, decidimos manter a palestra no nível 300. Engraçado que, durante a fase de montagem da palestra, deparamos com algumas situações inusitadas e que poderiam ser classificadas como nível 400 (nível máximo):
- A primeira demonstração de alto consumo de CPU deixou a máquina em um estado devagar quase parando. As queries realizavam operações de Table Scan com paralelismo e não sobrava recurso para o usuário. A solução foi diminuir a prioridade do processo SQLSERVR.EXE para Base Priority = Low.
- Na mesma demonstração, um índice não-clustered seria criado para suportar a consulta e, assim, otimizar o consumo de recursos. A execução do comando CREATE INDEX já passava de 9 minutos e não havia terminado. Através da DMV sys.dm_exec_requests, descobrimos que a criação de índice esperava por memória (RESOURCE_SEMAPHORE). A solução foi diminuir o número de clientes concorrentes e aumentar o parâmetro “Max Server Memory” da instância SQL. Após a mudança, o índice foi criado em 17 segundos.
- Tentamos criar um cenário em que uma Stored Procedure realizava uma grande quantidade de escritas em uma tabela. Queríamos demonstrar as esperas pelo wait type WRITELOG, mas tudo o que se observava era PREEMPTIVE_OS_WRITEFILEGATHER. O problema estava relacionado com o fato de que o bloco de escrita (LogCache) era tão grande que precisava ser quebrado em pedaços menores. A solução foi evitar usar transações longas, intercalando com transações menores.
- No mesmo cenário de inserção de dados, a tabela usava campos INTEGER e CHAR(4000). Queria demonstrar as esperas pelo wait type WRITELOG, mas tudo o que observava era PAGEIOLATCH. A causa desse problema é que o gargalo estava nos Page Splits de dados e não nas operações de log. A solução foi substituir a coluna CHAR(4000) por outra INTEGER. Dessa forma, as páginas de dados armazenariam um maior número de registros e ocorreria um menor número de Page Splits.
Da próxima vez, guarderei todas essas situações para fazer uma palestra que seja 100% nível 400.
Comments
Anonymous
September 22, 2010
Interessante, pena que não pude estar presente, mas vale as recomendações !!!Anonymous
September 22, 2010
Felizmente nos encontramos próximos a sala dos palestrantes. Foi um prazer conhecê-lo!Anonymous
September 22, 2010
The comment has been removedAnonymous
September 22, 2010
Grande Felipe, quem sabe você aparece na próxima! Abraços - FabricioAnonymous
September 22, 2010
A palestra foi muito interessante e, com certeza, uma das melhores de SQL que vi no teched! Agora é esperar o PPT para poder fazer alguns testes.Anonymous
September 22, 2010
Muito bom Vladimir! Agradeço por prestigiar a palestra e nos vemos novamente ano que vem. Abraços, Fabricio