terça-feira, 14 de setembro de 2010

TechEd Brasil 2010 - [DBP402] Material da apresentação

Oi pessoal.

Fechei hoje minha participação no TechEd Brasil 2010 como apresentador, foram 3 sessões em menos de 24 horas (todas entregues em 21:45h para ser preciso) e agora é hora de relaxar e aproveitar o resto do evento.

Como prometido, vou postar aqui os slides da minha apresentação e também os projetos/scripts que utilizei ao longo das sessões. E vou começar de trás para frente, para matar uma agonia pessoal.

Pegue aqui o PDF e script da demo.



Aproveitando, uma pequena demonstração e uma errata...
Primeiro a errata, que está me matando.

Durante a apresentação me perguntaram se o sp_recompile têm o mesmo efeito que o WITH RECOMPILE. Respondi que sim e continuei a palestra, mas meu processamento em background ficou me cutucando: "acho que você falou merda". E realmente falei besteira, o comportamento é diferente e o sp_recompile resolve nosso problema para tirar a procedure do plan cache.

Dito isso e mais aliviado, vamos a outro item que não tive tempo de detalhar, quando estava falando em auto parametrização eu troquei o script (já corrigi neste post) e acabei executando uma consulta que é auto parametrizada.

SELECT OrderID, CustomerID, EmployeeID, OrderDate FROM dbo.Orders WHERE OrderID >= 11071

Essa consulta é auto parametrizada pois independente do que você passe para o SQL Server, ele irá fazer um range scan, apesar dele somente mostrar um index seek no plano (não vemos o detalhe do range scan). Então se vocês olharem o STATISTICS IO e os planos das consultas que retornam os 830 registros, verão que o SCAN completo e o index seek, ambos farão uma leitura de 22 páginas.


dbcc freeproccache
SELECT OrderID, CustomerID, EmployeeID, OrderDate FROM dbo.Orders WHERE OrderID >= 11071

SELECT * FROM dbo.Orders

SELECT OrderID, CustomerID, EmployeeID, OrderDate FROM dbo.Orders WHERE OrderID >= 10248

Também deixo aqui uma brincadeira, para aqueles que querem navegar pela estrutura dos índices e acompanhar o range scan. :-)


SELECT * FROM sys.sysindexes where id = OBJECT_ID('Orders')
-- ROOT: 0x350100000100
-- First: 0x1B0100000100


SELECT DB_ID()
DBCC TRACEON(3604)
DBCC PAGE (6, 1, 283, 3)

-- 283
-- 310
-- 348
DBCC IND (Northwind, Orders, 1)

-- Filtragem dos 8 registros
DBCC TRACEON(3604)
DBCC PAGE (6, 1, 348, 3)

Até daqui a pouco.
[]s
 
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

2 comentários:

  1. Acontece com os melhores apresentadores. Ma suas 3 apresentações forma ótimas, como sempre.... PARABÉNS!

    ResponderExcluir
  2. Luciano , foi eu que perguntei e após a sua resposta , pensei comigo , venho executando este procedimento a uns 6 anos ou mais rs..rs..rs..e agora que eu descobri que não é o que eu achava..rs.rs...foi como você falar a uma criança que Papai noel não existe..rs..rs..Mas ainda bem que era engano. Sua apresentação foi uma das melhores do evento .Abs. Régis

    ResponderExcluir