{"id":4598,"date":"2016-06-07T10:22:22","date_gmt":"2016-06-07T13:22:22","guid":{"rendered":"http:\/\/www.fabriciolima.net\/blog\/?p=4298"},"modified":"2016-07-23T14:55:15","modified_gmt":"2016-07-23T17:55:15","slug":"queries-do-dia-a-dia-rotina-para-criar-um-historico-de-utilizacao-de-indices","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2016\/06\/07\/queries-do-dia-a-dia-rotina-para-criar-um-historico-de-utilizacao-de-indices\/","title":{"rendered":"Queries do Dia a Dia: Rotina para criar um Hist\u00f3rico de Utiliza\u00e7\u00e3o de \u00cdndices"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Muitos de voc\u00eas j\u00e1 devem ter visto que a DMV <em>sys.dm_db_index_usage_stats<\/em> retorna a utiliza\u00e7\u00e3o dos \u00edndices da nossa base de dados.<\/p>\n<p>Quem j\u00e1 assistiu minha palestra <a href=\"https:\/\/www.fabriciolima.net\/blog\/2016\/04\/11\/como-foi-o-sqlsat488-em-joinville-sc\/\" target=\"_blank\">Me tornei um DBA, o que devo aprender para ontem?<\/a>, ou participou do meu <a href=\"https:\/\/www.fabriciolima.net\/blog\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>, j\u00e1 me viu falando dessa DMV.<\/p>\n<p>Essa DMV \u00e9 SENSACIONAL!!!<\/p>\n<p><!--more--><\/p>\n<p>Com essa informa\u00e7\u00e3o, podemos excluir aqueles \u00edndices criados h\u00e1 10 anos e que ningu\u00e9m tinha coragem de excluir com medo de impactar no ambiente.<\/p>\n<p>Agora voc\u00eas sabem se o \u00edndice \u00e9 utilizado e decidem se podem excluir ou n\u00e3o.<\/p>\n<p>Para excluir um \u00edndice voc\u00ea tem que monitorar PELO MENOS 1 m\u00eas se esse \u00edndice est\u00e1 sendo utilizado para algo importante.<\/p>\n<p>O problema \u00e9 que essa DMV \u00e9 reiniciada toda vez que o SQL Server \u00e9 reiniciado.<\/p>\n<p>E tem mais&#8230;<\/p>\n<p>Muitos n\u00e3o sabem, mas no SQL Server 2012 e 2014 ela tamb\u00e9m \u00e9 reiniciada quando realizamos um REBUILD no \u00edndice. Ent\u00e3o, sua rotina de desfragmenta\u00e7\u00e3o de \u00edndices tamb\u00e9m pode atrapalhar na an\u00e1lise de quantas vezes o \u00edndice est\u00e1 sendo utilizado.<\/p>\n<p>Esse problema de restart da dmv na execu\u00e7\u00e3o do REBUILD foi resolvido no SQL Server 2016 conforme post abaixo:<\/p>\n<p><a href=\"http:\/\/www.littlekendra.com\/2016\/03\/07\/sql-server-2016-rc0-fixes-index-usage-stats-bug-missing-indexes-still-broken\/\" target=\"_blank\">http:\/\/www.littlekendra.com\/2016\/03\/07\/sql-server-2016-rc0-fixes-index-usage-stats-bug-missing-indexes-still-broken\/<\/a><\/p>\n<p>Como resolver isso e ter certeza da quantidade de vezes que seu \u00edndice est\u00e1 sendo utilizado?<\/p>\n<p><span style=\"color: #008000;\"><strong>R: Criando um hist\u00f3rico de utiliza\u00e7\u00e3o de \u00edndices.<\/strong><\/span><\/p>\n<p>Basta abrir o arquivo abaixo na base que deseja criar esse log e executar:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/06\/HistoricoUtilizacaoIndices.txt\" target=\"_blank\">HistoricoUtilizacaoIndices<\/a><\/p>\n<p>O script vai criar as tabelas abaixo:<\/p>\n<ul>\n<li>BaseDados<\/li>\n<li>Tabela<\/li>\n<li>Servidor<\/li>\n<li>Historico_Utilizacao_Indices<\/li>\n<\/ul>\n<p>A view para facilitar a visualiza\u00e7\u00e3o das informa\u00e7\u00f5es:<\/p>\n<ul>\n<li>vwHistorico_Utilizacao_Indice<\/li>\n<\/ul>\n<p>E a procedure que far\u00e1 a carga dos dados nas Tabelas:<\/p>\n<ul>\n<li>stpCarga_Utilizacao_Indice<\/li>\n<\/ul>\n<p>Depois de executar o script, basta criar um job para executar a procedure stpCarga_Utilizacao_Indice diariamente.<\/p>\n<p>Para visualiza\u00e7\u00e3o, criei uma tabela e fiz um insert de 1000 linhas:<\/p>\n<p>CREATE TABLE Teste_Utilizacao_Indice(<br \/>\nCod INT IDENTITY PRIMARY key,<br \/>\nDt_Log DATETIME )<\/p>\n<p>INSERT INTO Teste_Utilizacao_Indice(Dt_log)<br \/>\nSELECT GETDATE()<br \/>\nGO 1000<\/p>\n<p>Em seguida executei a procedure de carga:<\/p>\n<p>EXEC stpCarga_Utilizacao_Indice<\/p>\n<p>O resultado pode ser visto na view abaixo:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/PostHistoricoUtilizacaoIndices.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4299\" title=\"PostHistoricoUtilizacaoIndices\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/PostHistoricoUtilizacaoIndices-1024x187.jpg\" alt=\"\" width=\"655\" height=\"120\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Voc\u00ea tem a data do log, o Servidor, a Base, a Tabela, o \u00edndice, a quantidade de Seek, Scans e Lookup, se o \u00edndice j\u00e1 teve atualiza\u00e7\u00e3o e a \u00faltima vez que esse \u00edndice foi utilizado.<\/p>\n<p>Com isso, voc\u00ea consegue monitorar a utiliza\u00e7\u00e3o dos \u00edndices nos \u00faltimos 30 ou 60 dias (Seek+Scans+Lookup) e analizar se esse \u00edndice est\u00e1 valendo a pena manter ou se \u00e9 melhor exclu\u00edr.<\/p>\n<p>J\u00e1 utilizei muito esse hist\u00f3rico de utiliza\u00e7\u00e3o de \u00edndices para excluir \u00edndices em ambientes cr\u00edticos.<\/p>\n<p>Agora voc\u00eas tamb\u00e9m podem implementar.<\/p>\n<p>Script simples, mas j\u00e1 est\u00e1 a\u00ed prontinho para voc\u00eas utilizarem.<\/p>\n<p><b>Gostou dessa dica?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Aprenda a criar essa e muitas outras rotinas importantes para o seu dia a dia de DBA no meu <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Muitos de voc\u00eas j\u00e1 devem ter visto que a DMV sys.dm_db_index_usage_stats retorna a utiliza\u00e7\u00e3o dos \u00edndices da nossa base de dados. Quem j\u00e1 assistiu minha palestra Me tornei um DBA, o que devo aprender para ontem?, ou participou do meu Treinamento de Tarefas do Dia a Dia de um DBA, j\u00e1 me viu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3,1248,33,280],"tags":[111,1318,1313,1315,110,1314,1316,1317,33],"class_list":["post-4598","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-queries-do-dia-a-dia","category-sql-server","category-virtual-pass-br","tag-dm_db_index_usage_stats","tag-dvm-sql-serverdmv-indices","tag-historico-indices","tag-historico-utilizacao-indices","tag-indice","tag-indices-utilizados","tag-monitoramento-indices","tag-quais-indices-sao-utilizados","tag-sql-server"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":169,"url":"https:\/\/fabriciolima.net\/blog\/2010\/11\/30\/casos-do-dia-a-dia-exclusao-de-um-indice-grande-e-pouco-utilizado\/","url_meta":{"origin":4598,"position":0},"title":"Casos do Dia a Dia &#8211; Exclus\u00e3o de um \u00edndice grande e pouco utilizado","author":"Fabr\u00edcio Lima","date":"30 de novembro de 2010","format":false,"excerpt":"Fala pessoal, Algum tempo atr\u00e1s, compartilhei uma experi\u00eancia que tive no Blog do Fabr\u00edcio Catae (Blog|Twitter), mas tamb\u00e9m resolvi deixar registrado por aqui. Muitos de voc\u00eas j\u00e1 utilizaram a dmv sys.dm_db_index_usage_stats para verificar a utiliza\u00e7\u00e3o e atualiza\u00e7\u00e3o dos \u00edndices de uma tabela. Tamb\u00e9m sabemos que essa dmv tem seus dados\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4649,"url":"https:\/\/fabriciolima.net\/blog\/2016\/06\/22\/queries-do-dia-a-dia-monitorando-contadores-de-forma-simples-via-dmv\/","url_meta":{"origin":4598,"position":1},"title":"Queries do Dia a Dia &#8211; Monitorando Contadores de forma simples via DMV","author":"Fabr\u00edcio Lima","date":"22 de junho de 2016","format":false,"excerpt":"Ol\u00e1 Pessoal, Hoje vou compartilhar com voc\u00eas mais um script que utilizo nos clientes que realizo um monitoramento di\u00e1rio do SQL Server. Realizando uma busca na internet voc\u00ea encontra algumas formas de monitorar contadores no SQL Server. Voc\u00ea pode enviar dados do perfmon para um arquivo e depois importar para\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/POSTContadoresPerformance.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":6982,"url":"https:\/\/fabriciolima.net\/blog\/2017\/05\/01\/criando-um-e-mail-de-checklist-diario-no-sql-server\/","url_meta":{"origin":4598,"position":2},"title":"Criando um E-mail de CheckList Di\u00e1rio no SQL Server","author":"Fabr\u00edcio Lima","date":"1 de maio de 2017","format":false,"excerpt":"Update dia 22\/09\/2019: Veja nesse post uma nova vers\u00e3o para a cria\u00e7\u00e3o desse Checklist para seu BD SQL Server junto com outros 40 alertas: http:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/ \u00a0 \u00a0 Ol\u00e1 Pessoal, No dia 07\/03\/2010 eu fiz meu primeiro post para esse blog: Apresenta\u00e7\u00e3o Contudo, foi no dia 24\/03\/2010 que eu comecei a\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"checklist","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/01\/checklist.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9365,"url":"https:\/\/fabriciolima.net\/blog\/2018\/09\/11\/queries-do-dia-a-dia-como-monitorar-o-percentual-de-execucao-na-criacao-ou-rebuild-de-um-indice\/","url_meta":{"origin":4598,"position":3},"title":"Queries do Dia a Dia &#8211; Como Monitorar o Percentual de Execu\u00e7\u00e3o na Cria\u00e7\u00e3o ou Rebuild de um \u00cdndice?","author":"Fabr\u00edcio Lima","date":"11 de setembro de 2018","format":false,"excerpt":"Fala Pessoal, Quantas vezes voc\u00eas j\u00e1 criaram um \u00edndice em produ\u00e7\u00e3o e ficaram torcendo, apertando F5 toda hora, rezando, fazendo promessa para essa cria\u00e7\u00e3o acabar mais r\u00e1pido e resolver seu problema cr\u00edtico? Ficamos naquela d\u00favida, ser\u00e1 que cancelo ou n\u00e3o? Ser\u00e1 que j\u00e1 est\u00e1 acabando ou ainda vai demorar muito\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/MonitorandoRebuildIndiceClustered.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/MonitorandoRebuildIndiceClustered.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/MonitorandoRebuildIndiceClustered.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/MonitorandoRebuildIndiceClustered.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":8314,"url":"https:\/\/fabriciolima.net\/blog\/2017\/11\/03\/pass-summit-2017-dia-2\/","url_meta":{"origin":4598,"position":4},"title":"PASS SUMMIT 2017 \u2013 Dia 2","author":"Fabr\u00edcio Lima","date":"3 de novembro de 2017","format":false,"excerpt":"Fala Pessoal, O segundo dia do Pass Summit come\u00e7ou com nosso amigo Roberto Fonseca sendo premiado como\u00a0PASSion Award 2017 por todas as suas contribui\u00e7\u00f5es no \u00faltimo ano. Parab\u00e9ns Roberto!!! Levando o nome do Brasil para o mundo. \u00a0 Em seguida tivemos um keynote bem deep dive sobre CosmosDB. Altamente escal\u00e1vel\u2026","rel":"","context":"Em &quot;Eventos&quot;","block_context":{"text":"Eventos","link":"https:\/\/fabriciolima.net\/blog\/category\/eventos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/11\/roberto.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3129,"url":"https:\/\/fabriciolima.net\/blog\/2014\/11\/03\/treinamento-sql-server-tarefas-do-dia-a-dia-de-um-dba\/","url_meta":{"origin":4598,"position":5},"title":"Treinamento SQL Server: Tarefas do dia a dia de um DBA","author":"Fabr\u00edcio Lima","date":"3 de novembro de 2014","format":false,"excerpt":"\u00a0 Ol\u00e1 Pessoal, Um amigo quer entrar para a \u00e1rea de administra\u00e7\u00e3o de banco de dados e me solicitou um treinamento que abordasse as atividades de um DBA no seu dia a dia de trabalho. Diante disso, resolvi preparar um treinamento para ele, mas abrirei o treinamento para mais 4\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/11\/Treinamento.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/4598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=4598"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/4598\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=4598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=4598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=4598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}