A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Índices para Iniciantes

Apresentações semelhantes


Apresentação em tema: "Índices para Iniciantes"— Transcrição da apresentação:

1 Índices para Iniciantes
Fabrício Lima MVP Data Platform Índices para Iniciantes

2 Fabrício Lima Vitória-ES 11 anos de SQL Server
CEO Fabricio Lima Soluções em BD Pass Chapter Leader do SQL Server ES Palestrante em eventos (8º SQLSAT) Blog sobre SQL Server MVP Data Platform

3 Patrocinadores Observação –
Citar que o evento é gratuito e que os patrocinadores são os responsáveis por garantir o café da manhã, lanche da tarde e infraestrutura básica do evento. Em contrapartida eles desejam mostrar seus produtos e serviços. É bacana que vocês (público) conheçam eles e aceitem receber mailing.

4 Índices no SQL Server Tarefas do dia a dia de um DBA
Índices são estruturas em disco organizadas em estrutura de árvore para facilitar nossas buscas. Tarefas do dia a dia de um DBA Leitura Complementar: Livro:

5 Heap, Clustered e Nonclustered
Heap – Tabela sem um índice clustered. Índice Clustered – É a própria tabela armazenada de forma estruturada/ordenada pela chave que você definiu na criação do índice O nível folha contém todas as colunas da tabela Só pode ter um por tabela Índice Nonclustered – É uma estrutura independente formada pelas colunas do índice nonclustered e possui um RID/ClusterKey para acessar a tabela (Heap ou Cluster) Não contém todos os dados da tabela Podemos ter mais de um por tabela (até 999 se tiver coragem) Tarefas do dia a dia de um DBA Leitura Complementar:

6 Índice Cluster Cenário: TABELA com 3 colunas: LastName (clustered)
Name (Nonclustered) Dt_Nascimento Consulta 1: Select Lastname from TABELA where Lastname = 'Domingues’ Consulta 2: Select * where Lastname = 'Domingues' 10/05/2000 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1989 10/05/2000 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1989 10/05/2000 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1989 10/05/2000 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1989 Vídeo em inglês muito bom para entendimento do funcionamento dos índices:

7 Índice Não-Cluster Cenário: TABELA com 3 colunas: LastName (clustered)
Name (Nonclustered) Dt_Nascimento Consulta 1: Select Lastname, Name from TABELA where Name = 'Anabela' Consulta 2: Select * Consulta 3: where Dt_Nascimento = ' ' 10/05/2010 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1979 10/05/2000 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1969 10/05/2008 18/06/1981 10/05/2002 14/08/1985 21/04/2015 16/06/1982 10/05/2005 14/09/1959 10/05/2001 18/06/1981 10/05/2002 14/08/1985 10/05/2008 16/06/1982 10/05/2005 14/09/1979

8 Índice Nonclustered + CLustered

9 Índice Nonclustered + Heap

10 DEMO (a gosto do freguês)

11 Criação de índices “Quando você cria um índice que melhora uma query de 10 minutos para 1 minuto ou de 1 minuto para 1 segundo.” Reação DBA Reação Usuário

12 Criação de índices “Quando o cliente diz que já otimizou o banco com a criação de alguns índices.”

13 Include, FillFactor e PageSplit
INCLUDE: Inclui as colunas apenas no Leaf Level do índice, deixando os outros níveis menores. É utilizado para que não seja necessário acessar o índice clustered ou heap para pegar uma coluna utilizada na query (covered index). FILLFACTOR: Especifica o percentual de preenchimento das páginas dos índices. O Default do SQL Server é criar o FILLFACTOR com o valor 0, que na verdade é igual a 100%! Page Split: Quando você faz um update/insert e uma página está cheia, outra página é criada e os registros são divididos entre elas. Leitura Complementar:

14 FILLFACTOR “Quando o cliente diz que colocou o FILLFACTOR em 10% para reduzir a Fragmentação dos Índices.”

15 DEMO (a gosto do freguês)

16 Fragmentação

17 Fragmentação REORGANIZE:
Não utiliza espaço em disco a mais para realizar essa operação Reorganiza os LEAF LEVEL dos índices Não atualiza as estatísticas dos índices Se cancelar o comando, não perde o que foi feito. O REBUILD perde. REBUILD: Utiliza espaço em disco temporário para realizar o REBUILD Destrói o índice e cria novamente Atualiza as estatísticas dos índices Causa um Lock grande na tabela quando executado de forma OFFLINE. A versão Enterprise do SQL permite que se execute um REBUILD ONLINE.

18 Fica Tranquilo Walter(Walt), eu tenho um Job de Rebuild!!!
Fragmentação Fica Tranquilo Walter(Walt), eu tenho um Job de Rebuild!!! Para quem não conhece, esse é o Walter!

19 DEMO (a gosto do freguês)

20 DMV - Utilização de Índices no SQL Server
dm_db_index_usage_stats – Essa DMV informa quantas vezes um índice foi utilizado desde a última vez que o SQL Server foi reiniciado. (Informação valiosa) BUG no SQL 2012 e 2014 (reinicia com REBUILD): Para não perder informação em caso de restart do SQL, crio uma rotina que guarda essa informação de forma diária. Muito útil para decidir na exclusão de um índice

21 DMV – Dicas de Criação de Índices
Exemplo de uma sugestão indevida de um índice que já existe.

22 DMV – Dicas de Criação de Índices
sys.dm_db_missing_index_* – Esse conjunto de DMVs informam alguns índices que poderiam ser criados no banco de dados. Considerações para utilização: Analisar a qtd de colunas do índice que está sendo sugerido Analisar o tamanho da tabela, a quantidade de vezes que o índice seria utilizado e o impacto Analisar se já não existe um índice parecido com o que foi sugerido Após criar o índice, acompanhar com a DMV de utilização se esse índice foi utilizado ou não Em caso de pouca utilização, exclua o índice As vezes essa DMV indica índices que já existem (não é 100% confiável) NUNCA CRIE TODOS OS ÍNDICES INDICADOS POR ESSA DMV Leitura Complementar:

23 Referências Índices: PAGE Split: Livro:
PAGE Split: Livro:

24 Dicas de Materiais Grátis
Livros: Vídeo Aulas: PodCast do DatabaseCast sobre manutenção de Banco de dados Whitepaper SQL Blos que o Fabricio Lima acompanha

25 http://www.sqlsaturday.com/618 30/09 – São Paulo
21/10 – Rio de Janeiro 18/11 - Salvador Observação – Convidar os participantes para prestigiarem o próximo SQL Saturday que será em Brasília no dia 19 de Agosto. Assim como, lembrá-los que também acontecerá SQL Saturday em SP, RJ e Salvador.

26 Contatos contato@fabriciolima.net fabriciolima.net @Fabriciodba
br.linkedin.com/in/FabricioLimaSolucoesEmBD fabriciolima.net @Fabriciodba

27 Dúvidas

28 Apoio


Carregar ppt "Índices para Iniciantes"

Apresentações semelhantes


Anúncios Google