Índices para Iniciantes

Slides:



Advertisements
Apresentações semelhantes
Operadores Especiais da SQL
Advertisements

Comandos de SQL Excel VBA II.
sintonia de banco de dados
Treinamento sobre SQL.
É um conjunto de RDLs desenvolvidas usando os custom reports do Management Studio que ajudam a resolver alguns dos problemas de performance do SQL tais.
Daniel Paulo Introdução Informações de uma tabela ou view podem ser encontradas de maneira mais rápida através da utilização.
VBA – Visual Basic para Aplicativos
Administração de banco de dados José Antônio da Cunha IFRN.
Administração de Banco de dados José Antônio da Cunha CEFET-RN.
Manual Rápido de utilização do Sistema RAI.. Tela de Login do sistema Seu Senha: rai.
SQL Saturday #512 - Rio Passo a Passo para realizar uma Consultoria de Tuning em um Cliente Fabrício Lima | FabricioLima Soluções em BD Site:
SQL Saturday #512 Boas Vindas Sulamita Dantas Flávio Farias.
Relatórios.  O Relatório é um componente ActiveX chamado ActiveReport, que permite a visualização e impressão de valores instantâneos de variáveis do.
Disciplina: Gerenciamento e Desenvolvimento em Banco de Dados Professora: Chaiene Minella, MSc
Passo a Passo para realizar uma Consultoria de Tuning em um Cliente Fabrício Lima | FabricioLima Soluções em BD Site: SQL.
Encontro SQL BH May 2016 Desmistificando Índices com SQL Server.
Supervisão e Redes Industriais Tutorial E3 Elipse Capítulo 14 ARMAZENAMENTO DE DADOS Felipe Domeni, Gabriel Martin, Leandro Gomes Rafael Benoliel, Tiago.
Implantando um ERP com sucesso Sistemas de Gestão Integrada - ERP Juliana Maria Lopes Alexandre Moya João Roberto Magazoni 27LI – Julho 2005.
SQL Server Heterogêneo SQL Server + Big Data MVP Rodrigo | Rdornel Data Platform eXperts
Monitorando o SQL SERVER e o Oracle
Backup, isso salva a sua empresa e o seu emprego!!!
Manual de configuração do backup arquivos
SQL Saturday #573 – Brasília 2016
Gustavo Moura Fé Maia SQL Server vNext.
Persistência de dados e padrão DAO
Criando um baseline de seu ambiente completo utilizando SSIS e SSRS
SQL In-Memory aka Hekaton 101
Monitorando os Recursos e Proscessos do Servidor, através do Power BI
Índices para Iniciantes
Azure CosmosDB: Globally distributed, multi-model database service
Monitorando o SQL Server através do SQLdiag
Sulamita Dantas Query Store #BHs2SQLServer.
XXII CONAD – CONGRESSO NACIONAL DE ADMINISTRAÇÃO
Agregador de Notícias e Eventos - UFPI
Monitorando os Recursos e Proscessos do Servidor, através do Power BI
Administração de Banco de Dados
Manual de configuração do backup de bases Firebird
Armazenamento de dados históricos no SQL Server 2016
VIDA FUNCIONAL MOVIMENTAÇÕES GERAIS Olá!
O que é um banco de dados? Antes precisamos entender o que são dados.
Audit Trail Logix 16/Agosto/2017.
Banco de Dados Representa o arquivo físico de dados, armazenado em dispositivos periféricos, para consulta e atualização pelo usuário. Possui uma série.
Super ETL’s com as novidades do SSIS 2016
4º Encontro do Grupo SQL Server ES
Prof. Wellington Franco
Fórum - Projeto Soyuz Framework SP FRAMEWORK, AGOSTO 2016.
Você sabe fazer infográfico?
Monitorando SQL SERVER e Oracle
BANCO DE DADOS Araújo Lima Out / 2017 Araújo.
Índices para Iniciantes
BANCO DE DADOS Araújo Lima Outubro / 2017 Araújo.
Daniel Paulo SQL Server 2016 Módulo II Daniel Paulo
Aplicativos para Internet Aula 13
Aplicativos para Internet Aula 12
Desenvolvimento em Camadas
SQL Uma breve pesquisa.
Índices para Iniciantes
Graph Databases no SQL Server 2017
Implementando soluções de IA utilizando os serviços cognitvos no Azure
Quer ser um excelente DBA?
MS-SQL Server Structure Query Language
PL/SQL Triggers e Procedures
Treinamento SQL Server Tarefas do dia a dia de um DBA
Prática - BD Distribuído
Event Hubs + Stream Analytics + Power BI
Conheça as novas ferramentas da área de Gestão de Conhecimento!
DevOps for Azure Databases
Gerenciamento de backup e dumps do MySQL
Aula de R Introdutória.
Migração de Dados com Azure Data Factory Orlando Gomes BI Microsoft Student Partner (MSP) linkedin.com/in/orlandomariano.
Transcrição da apresentação:

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

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

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.

Í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: https://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/ http://www.sql-server-performance.com/2007/clustered-indexes/ http://www.mssqltips.com/sqlservertip/1206/understanding-sql-server-indexing/ http://www.mssqltips.com/sql-server-tip-category/38/indexing/ http://blogs.msdn.com/b/timchapman/archive/2012/09/28/index-rebuild-vs-reorganize-the-transaction-log-edition.aspx Livro: http://www.amazon.com/Expert-Performance-Indexing-Server-2012/dp/1430237414

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: http://www.fabriciolima.net/blog/2010/11/30/casos-do-dia-a-dia-exclusao-de-um-indice-grande-e-pouco-utilizado/

Í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: https://www.youtube.com/watch?v=p9FlnOPltA8

Í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 = '20150421' 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

Índice Nonclustered + CLustered

Índice Nonclustered + Heap

DEMO (a gosto do freguês)

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

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

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: http://www.fabriciolima.net/blog/2011/02/07/querys-do-dia-a-dia-como-visualizar-as-colunas-include-de-um-indice/ http://fabriciolima.net/blog/2011/02/26/qual-o-valor-ideal-para-o-fillfactor-de-um-indice/

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

DEMO (a gosto do freguês)

Fragmentação

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.

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!

DEMO (a gosto do freguês)

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): http://www.littlekendra.com/2016/05/18/index-usage-stats-bug-fixed-in-sql-server-2012-sp2-cu12-sp3-cu3/ 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

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

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: http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx http://www.sql-server-performance.com/2009/identify-missing-indexes-using-sql-server-dmvs/ http://www.mssqltips.com/sqlservertip/1634/using-sql-server-dmvs-to-identify-missing-indexes/

Referências Índices: PAGE Split: Livro: https://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/ http://www.sql-server-performance.com/2007/clustered-indexes/ http://www.mssqltips.com/sqlservertip/1206/understanding-sql-server-indexing/ http://www.mssqltips.com/sql-server-tip-category/38/indexing/ http://blogs.msdn.com/b/timchapman/archive/2012/09/28/index-rebuild-vs-reorganize-the-transaction-log-edition.aspx https://www.youtube.com/watch?v=p9FlnOPltA8 http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx http://www.sql-server-performance.com/2009/identify-missing-indexes-using-sql-server-dmvs/ http://www.mssqltips.com/sqlservertip/1634/using-sql-server-dmvs-to-identify-missing-indexes/ PAGE Split: http://www.sqlskills.com/blogs/paul/tracking-page-splits-using-the-transaction-log/ http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/06/28/what-is-a-page-split-what-happens-why-does-it-happen-why-worry.aspx Livro: http://www.amazon.com/Expert-Performance-Indexing-Server-2012/dp/1430237414 http://www.amazon.com/Server-Query-Performance-Tuning-Experts/dp/1430242035

Dicas de Materiais Grátis Livros: http://www.microsoftvirtualacademy.com/ebooks http://www.fabriciolima.net/blog/2010/12/03/free-ebooks-sobre-sql-server-para-download/ http://www.johnsansom.com/dba-jumpstart/ http://www.red-gate.com/products/dba/dba-bundle/entrypage/2012-how-to-become-an-exceptional-dba?utm_source=simpletalk&utm_medium=weblink&utm_content=st_bradbook200907&utm_campaign=sqlbackupbundle&__hstc=81186632.bdbc59f5f888a85d2c87a85f9b4a38d9.1441479079284.1441479079284.1441479079284.1&__hssc=81186632.1.1441479079284&__hsfp=2767783758 http://www.red-gate.com/community/books/accidental-dba Vídeo Aulas: http://www.microsoftvirtualacademy.com/product-training/sql-server http://www.microsoftvirtualacademy.com/product-training/product-sql-server-pt https://technet.microsoft.com/en-us/dn912438 PodCast do DatabaseCast sobre manutenção de Banco de dados https://www.youtube.com/watch?v=Yvd9b4yRiHE&t=910s Whitepaper SQL https://technet.microsoft.com/en-us/sqlserver/bb671430 Blos que o Fabricio Lima acompanha https://www.fabriciolima.net/blog/2017/03/14/video-blogs-sobre-sql-server-que-o-fabricio-lima-acompanha/

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.

Contatos contato@fabriciolima.net fabriciolima.net @Fabriciodba www.facebook.com/pages/Fabricio-Lima-Consultoria-SQL-Server/239658476126229 br.linkedin.com/in/FabricioLimaSolucoesEmBD fabriciolima.net @Fabriciodba http://www.fabriciolima.net/blog/

Dúvidas

Apoio