{"id":9431,"date":"2018-10-08T08:32:10","date_gmt":"2018-10-08T11:32:10","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=9431"},"modified":"2018-10-08T08:32:10","modified_gmt":"2018-10-08T11:32:10","slug":"azure-sql-database-monitorando-a-fragmentacao-dos-indices","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2018\/10\/08\/azure-sql-database-monitorando-a-fragmentacao-dos-indices\/","title":{"rendered":"Azure SQL Database &#8211; Monitorando a Fragmenta\u00e7\u00e3o dos \u00cdndices"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-9426 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06.png\" alt=\"\" width=\"571\" height=\"343\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06.png 687w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06-300x180.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06-410x246.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06-100x60.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06-275x165.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie06-20x12.png 20w\" sizes=\"auto, (max-width: 571px) 100vw, 571px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Fala Pessoal,<\/p>\n<p>Continuando a s\u00e9rie de posts sobre\u00a0<strong>Azure SQL Database<\/strong>, dessa vez vamos criar uma rotina para monitorar a fragmenta\u00e7\u00e3o dos nossos \u00edndices.<\/p>\n<p>No SQL Azure Database, nossos \u00edndices continuam se fragmentando e o DBA\\DEV que administra essa base de dados continua com a miss\u00e3o de desfragmentar esses \u00edndices e talvez at\u00e9 mudar o<strong> FILL FACTOR<\/strong> de um \u00edndice quando achar v\u00e1lido.<\/p>\n<p>O script desse post pode te ajudar tanto na sua rotina de desfragmenta\u00e7\u00e3o de \u00edndices quanto na sua an\u00e1lise de <strong>FILL FACTOR<\/strong> dos \u00edndices.<\/p>\n<p>O script completo pode ser pego no nosso <strong>Github<\/strong>:<\/p>\n<p><a href=\"https:\/\/github.com\/FabricioLimaSolucoesEmBD\/SQLScripts\/blob\/master\/AzureSQLDatabase\/Rotina%20para%20monitorar%20a%20fragmenta%C3%A7%C3%A3o%20dos%20%C3%ADndices\" target=\"_blank\" rel=\"noopener\">Script Rotina para monitorar a fragmenta\u00e7\u00e3o dos \u00edndices<\/a><\/p>\n<p>Ele cria algumas tabelas para armazenar as informa\u00e7\u00f5es, uma view para visualizar os dados e uma procedure de carga para inserir os registros nas tabelas.<\/p>\n<p>Ap\u00f3s criada as tabelas, a view e a procedure do script acima, basta agendar a procedure <strong>stpCarga_Fragmentacao_Indice<\/strong><em><strong>\u00a0<\/strong><\/em>no azure 1 vez por dia.<\/p>\n<p>Nesse post abaixo mostrei como voc\u00ea pode fazer esse agendamento:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/08\/13\/azure-sql-database-como-criar-um-job-para-executar-uma-procedure\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.fabriciolima.net\/blog\/2018\/08\/13\/azure-sql-database-como-criar-um-job-para-executar-uma-procedure\/<\/a><\/p>\n<p>Ap\u00f3s executar uma vez a procedure de carga, j\u00e1 temos as informa\u00e7\u00f5es que precisamos conforme pode ser visto abaixo:<\/p>\n<pre class=\"lang:tsql decode:true\">select top 5 *\r\nfrom vwHistorico_Fragmentacao_Indice\r\norder by Avg_Fragmentation_In_Percent desc<\/pre>\n<p>Como s\u00f3 tabelas que possuem mais de<strong> 1000 p\u00e1ginas<\/strong> importam, as tabelas pequenas n\u00e3o ser\u00e3o retornadas nessa query. No meu LAB s\u00f3 duas tabelas tem mais de 1000 p\u00e1ginas.<\/p>\n<p>Segue o resultado:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-9519 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices.png\" alt=\"\" width=\"1333\" height=\"94\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices.png 1404w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-300x21.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-1024x72.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-768x54.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-700x49.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-410x29.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-100x7.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-275x19.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/10\/AzureSerie06_Frag_Indices-20x1.png 20w\" sizes=\"auto, (max-width: 1333px) 100vw, 1333px\" \/><\/p>\n<p>A coluna<strong> Avg_Fragmentation_In_Percent<\/strong> vai mostrar o percentual de fragmenta\u00e7\u00e3o do seu \u00edndice e agora voc\u00ea consegue saber quais \u00edndices est\u00e3o se fragmentando mais, mesmo no <strong>Azure SQL Database<\/strong>.<\/p>\n<p>Se sua base for muito grande, esse procedimento pode demorar um pouco. Teste antes de deixar rodando em produ\u00e7\u00e3o.<\/p>\n<p>Essa foi mais uma dica de como voc\u00ea pode fazer algo por suas bases no <strong>Azure SQL Database<\/strong>.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/p>\n<p>Posts relacionados sobre o Azure SQL Database:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/07\/10\/azure-sql-database-funcao-getdate-com-valor-errado-no-azure-e-isso-mesmo\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL Database \u2013 Fun\u00e7\u00e3o getdate() com valor errado no Azure. \u00c9 isso mesmo?<\/a><\/li>\n<li><a href=\"http:\/\/www.fabriciolima.net\/blog\/2018\/03\/17\/azure-sql-db-managed-instance-introducao\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL DB Managed Instance \u2013 Introdu\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"http:\/\/www.fabriciolima.net\/blog\/2018\/07\/12\/azure-sql-database-como-fazer-um-join-entre-tabelas-de-bases-diferentes\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL Database \u2013 Como fazer um join entre tabelas de bases diferentes?<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/07\/17\/azure-sql-database-quanto-posso-usar-de-transaction-log-e-ilimitado\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL Database \u2013 Quanto posso usar de Transaction Log? \u00c9 ilimitado?<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/08\/13\/azure-sql-database-como-criar-um-job-para-executar-uma-procedure\/\" target=\"_blank\" rel=\"noopener\">Azure SQL Database \u2013 Como criar um Job para executar uma procedure?<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/10\/02\/azure-sql-database-monitorando-o-tamanho-das-tabelas\/\" target=\"_blank\" rel=\"noopener\">Azure SQL Database \u2013 Monitorando o Tamanho das Tabelas<\/a><\/li>\n<\/ul>\n<p><b>Gostou da dica?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Assine meu canal no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">Youtube<\/a>\u00a0e curta minha\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">P\u00e1gina no Facebook<\/a>\u00a0para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Fala Pessoal, Continuando a s\u00e9rie de posts sobre\u00a0Azure SQL Database, dessa vez vamos criar uma rotina para monitorar a fragmenta\u00e7\u00e3o dos nossos \u00edndices. No SQL Azure Database, nossos \u00edndices continuam se fragmentando e o DBA\\DEV que administra essa base de dados continua com a miss\u00e3o de desfragmentar esses \u00edndices e talvez at\u00e9 mudar o [&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":[1616,280],"tags":[],"class_list":["post-9431","post","type-post","status-publish","format-standard","hentry","category-azure-sql-database","category-virtual-pass-br"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":9434,"url":"https:\/\/fabriciolima.net\/blog\/2018\/10\/26\/azure-sql-database-monitorando-a-utilizacao-dos-indices\/","url_meta":{"origin":9431,"position":0},"title":"Azure SQL Database &#8211; Monitorando a Utiliza\u00e7\u00e3o dos \u00cdndices","author":"Fabr\u00edcio Lima","date":"26 de outubro de 2018","format":false,"excerpt":"\u00a0 Fala Pessoal, Continuando a s\u00e9rie de posts sobre\u00a0Azure SQL Database, dessa vez vamos criar uma rotina para que voc\u00ea possa monitorar a utiliza\u00e7\u00e3o dos \u00edndices no SQL do Azure. No Azure SQL Database voc\u00ea pode ativar uma op\u00e7\u00e3o para que o SQL te sugira ou exclua \u00edndices automaticamente. Ativando\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie07.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie07.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie07.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":440,"url":"https:\/\/fabriciolima.net\/blog\/2011\/02\/16\/monitorando-a-fragmentacao-dos-indices\/","url_meta":{"origin":9431,"position":1},"title":"Monitorando a fragmenta\u00e7\u00e3o dos \u00edndices","author":"Fabr\u00edcio Lima","date":"16 de fevereiro de 2011","format":false,"excerpt":"Um dos grandes problemas que temos com rela\u00e7\u00e3o a performance \u00e9 devido a fragmenta\u00e7\u00e3o de nossos \u00edndices. Nesse post mostro como criar uma rotina para monitorar a fragmenta\u00e7\u00e3o dos \u00edndices do Banco de Dados e diminuir essa fragmenta\u00e7\u00e3o.","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\/2011\/02\/Fragmentacao_Indice-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/Fragmentacao_Indice-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/Fragmentacao_Indice-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/Fragmentacao_Indice-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":9436,"url":"https:\/\/fabriciolima.net\/blog\/2018\/10\/29\/azure-sql-database-monitorando-a-utilizacao-de-recursos\/","url_meta":{"origin":9431,"position":2},"title":"Azure SQL Database &#8211; Monitorando a Utiliza\u00e7\u00e3o de Recursos","author":"Fabr\u00edcio Lima","date":"29 de outubro de 2018","format":false,"excerpt":"\u00a0 Fala Pessoal, Continuando a s\u00e9rie de posts sobre\u00a0Azure SQL Database, dessa vez vamos criar uma rotina para que voc\u00ea possa monitorar a view sys.dm_db_resource_stats. Administramos um banco de dados no Azure onde o cliente n\u00e3o p\u00f4de nos liberar acesso ao portal, mas liberou acesso ao SQL via SSMS. Dessa\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie08.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie08.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie08.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":484,"url":"https:\/\/fabriciolima.net\/blog\/2011\/02\/26\/qual-o-valor-ideal-para-o-fillfactor-de-um-indice\/","url_meta":{"origin":9431,"position":3},"title":"Qual o valor ideal para o FILLFACTOR de um \u00cdndice?","author":"Fabr\u00edcio Lima","date":"26 de fevereiro de 2011","format":false,"excerpt":"Fala Pessoal, Voc\u00ea que \u00e9 um DBA, algum dia j\u00e1 deve ter feito essa pergunta para algu\u00e9m ou para o google. A resposta deve ter sido que n\u00e3o existe uma receita de bolo para definir o valor do fillfactor de um \u00edndice, seu valor depende do ambiente ser OLTP (Online\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\/2011\/02\/Tabela-Historico-Fragmentacao-300x90.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9415,"url":"https:\/\/fabriciolima.net\/blog\/2018\/10\/02\/azure-sql-database-monitorando-o-tamanho-das-tabelas\/","url_meta":{"origin":9431,"position":4},"title":"Azure SQL Database &#8211; Monitorando o Tamanho das Tabelas","author":"Fabr\u00edcio Lima","date":"2 de outubro de 2018","format":false,"excerpt":"Fala Pessoal, Continuando a s\u00e9rie de posts sobre\u00a0Azure SQL Database, dessa vez vamos criar uma rotina para que voc\u00ea possa monitorar o crescimento das suas tabelas no SQL do Azure. Quem administra um banco de dados importante, conhece as maiores tabelas, j\u00e1 que elas normalmente d\u00e3o mais trabalho na administra\u00e7\u00e3o\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie05.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie05.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/09\/AzureSerie05.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":9285,"url":"https:\/\/fabriciolima.net\/blog\/2018\/08\/13\/azure-sql-database-como-criar-um-job-para-executar-uma-procedure\/","url_meta":{"origin":9431,"position":5},"title":"Azure SQL Database &#8211; Como criar um Job para executar uma procedure?","author":"Fabr\u00edcio Lima","date":"13 de agosto de 2018","format":false,"excerpt":"Fala Pessoal, Continuando a s\u00e9rie de posts sobre Azure SQL Database, dessa vez vou resolver um problema que muitos de voc\u00eas que j\u00e1 est\u00e3o trabalhando com o Azure SQL devem ter passado. Fabr\u00edcio, o Azure SQL Database n\u00e3o tem um Agent???? Como que vou rodar meus Jobs de Desfragmenta\u00e7\u00e3o de\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/9431","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=9431"}],"version-history":[{"count":4,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/9431\/revisions"}],"predecessor-version":[{"id":9521,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/9431\/revisions\/9521"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=9431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=9431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=9431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}