{"id":93,"date":"2024-04-06T17:42:30","date_gmt":"2024-04-06T20:42:30","guid":{"rendered":"https:\/\/jornadasql.com.br\/index.php\/2020\/01\/04\/british-designer-create-arras\/"},"modified":"2024-04-06T18:05:53","modified_gmt":"2024-04-06T21:05:53","slug":"rebuild-e-reorganize","status":"publish","type":"post","link":"https:\/\/blog.jornadasql.com.br\/index.php\/2024\/04\/06\/rebuild-e-reorganize\/","title":{"rendered":"Rebuild e Reorganize"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"93\" class=\"elementor elementor-93\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7f664a5a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7f664a5a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"aux-parallax-section elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ab9a5b3\" data-id=\"5ab9a5b3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7f68c1ef elementor-widget elementor-widget-text-editor\" data-id=\"7f68c1ef\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>Fala Malta!<\/p>\n<p>Voc\u00eas j\u00e1 ouviram fala em fragmenta\u00e7\u00e3o dos \u00edndices ?<\/p>\n<p>Em um ambiente de banco de dados a otimiza\u00e7\u00e3o e desempenho s\u00e3o cruciais para garantir que as consultas sejam executadas de forma eficiente. Uma parte fundamental desse processo, que vem ap\u00f3s a cria\u00e7\u00e3o correta de \u00edndices, \u00e9 a manuten\u00e7\u00e3o dos \u00edndices, e isso inclui as opera\u00e7\u00f5es de rebuild e reorganize.<\/p>\n<p>Alias se voc\u00ea tem duvidas sobre \u00edndices ainda recomendo assistir este v\u00eddeo onde o Italo fala sobre o \u00edndice Cluster, tenho certeza que com ele voc\u00ea saber\u00e1 como funciona um \u00edndice e como cria-lo da forma correta.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20c87dd elementor-widget elementor-widget-video\" data-id=\"20c87dd\" data-element_type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/watch?v=DLbP5jTJqRA&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d90ce60 elementor-widget elementor-widget-text-editor\" data-id=\"d90ce60\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>Certo, mas o que \u00e9 a fragmenta\u00e7\u00e3o do \u00edndice e como ela ocorre ?<\/p>\n<p>A fragmenta\u00e7\u00e3o mais aprofundada vou deixar pra explicar em outro post, mas como mencionado no v\u00eddeo, os \u00edndices s\u00e3o organizados de maneira ordenada, mas em uma tabela que sempre est\u00e1 sofrendo INSERT, UPDATE e DELETE, essa organiza\u00e7\u00e3o passa a ficar um pouco ca\u00f3tica gerando uma certa desorganiza\u00e7\u00e3o as paginas de dados dos \u00edndices.<\/p>\n<p>Rebuild e Reorganize, o que s\u00e3o, como surgem e como solucionar:<\/p>\n<p>Antes de detalhamos as rotinas de rebuild e reorganize, \u00e9 importante entender a diferen\u00e7a entre os dois:<\/p>\n<p>Rebuild (Reconstruir): Esta fun\u00e7\u00e3o literalmente reconstr\u00f3i o \u00edndice existente, e o reconstr\u00f3i do zero mesmo. Isso resulta em um \u00edndice totalmente otimizado e compactado. No entanto, durante o processo de reconstru\u00e7\u00e3o, o \u00edndice fica indispon\u00edvel, o que pode afetar o desempenho das consultas que dependem dele.<br \/>Ent\u00e3o, pelo amor que voc\u00ea tem a sua profiss\u00e3o, JAMAIS, eu disse JAMAIS rode um rebuild em hor\u00e1rio de produ\u00e7\u00e3o do banco.<\/p>\n<p>Reorganize (Reorganizar): Esta opera\u00e7\u00e3o reorganiza os dados dentro do \u00edndice existente, eliminando espa\u00e7os em branco e reestruturando as p\u00e1ginas do \u00edndice. Ao contr\u00e1rio do rebuild, a reorganiza\u00e7\u00e3o \u00e9 uma opera\u00e7\u00e3o online, o que significa que o \u00edndice permanece acess\u00edvel durante todo o processo.<\/p>\n<p>Quando devo utilizar Rebuild e Reorganize?<\/p>\n<p>A escolha entre rebuild e reorganize depende do estado atual de fragmeta\u00e7\u00e3o do \u00edndice e das necessidades espec\u00edficas do ambiente de banco de dados.<\/p>\n<p>Rebuild: Recomenda-se usar rebuild quando o \u00edndice est\u00e1 fragmentado em excesso, ou seja, quando o fator de fragmenta\u00e7\u00e3o est\u00e1 significativamente alto. Um \u00edndice altamente fragmentado pode prejudicar o desempenho das consultas, e um rebuild pode resolver esse problema.<\/p>\n<p>Reorganize: Por outro lado, a reorganiza\u00e7\u00e3o \u00e9 uma op\u00e7\u00e3o mais leve e \u00e9 adequada para \u00edndices com fragmenta\u00e7\u00e3o moderada. Se o \u00edndice n\u00e3o estiver excessivamente fragmentado, a reorganiza\u00e7\u00e3o pode ser suficiente para melhorar o desempenho, evitando o tempo de inatividade associado ao rebuild.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-743c9ca elementor-widget elementor-widget-text-editor\" data-id=\"743c9ca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Rebuild de \u00cdndice:<\/p>\n<p>ALTER INDEX ALL ON NomeDaTabela REBUILD;<\/p>\n<p><br \/>Reorganize de \u00cdndice:<\/p>\n<p>ALTER INDEX ALL ON NomeDaTabela REORGANIZE;<\/p>\n<p>Lembre-se de substituir &#8220;NomeDaTabela&#8221; pelo nome da tabela onde o \u00edndice est\u00e1 localizado. Voc\u00ea tamb\u00e9m pode especificar um \u00edndice espec\u00edfico em vez de &#8220;ALL&#8221; se desejar reconstruir ou reorganizar apenas um \u00edndice espec\u00edfico.<\/p>\n<p>Na empresa atual em que trabalho tenho rotina que correm de madrugada para fazer estas manuten\u00e7\u00f5es, segue um trecho do codigo que utilizo<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36481d2 elementor-widget elementor-widget-code-highlight\" data-id=\"36481d2\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-twilight copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-sql line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-sql\">\n\t\t\t\t\t<xmp>SELECT \r\n       sch.name AS SchemaName \r\n     , OBJECT_NAME(ind.OBJECT_ID) AS TableName\r\n     , ind.name AS IndexName\r\n     , indexstats.index_type_desc AS IndexType\r\n     , indexstats.avg_fragmentation_in_percent\r\n     , 'ALTER INDEX ' + QUOTENAME(ind.name)  + ' ON ' + QUOTENAME( sch.name ) + '.' + QUOTENAME(object_name(ind.object_id)) + \r\n       CASE WHEN indexstats.avg_fragmentation_in_percent>30 THEN ' REBUILD ' \r\n            WHEN indexstats.avg_fragmentation_in_percent>=5 THEN ' REORGANIZE '\r\n            ELSE NULL \r\n\t   END as [SQLQuery]  -- if <5 not required, so no query needed\r\n FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats \r\n INNER \r\n JOIN sys.indexes ind ON ind.object_id = indexstats.object_id \r\n                     AND ind.index_id = indexstats.index_id \r\n JOIN sys.objects obj on ind.object_id = obj.object_id\r\n JOIN sys.schemas sch on obj.schema_id = sch.schema_id\r\nWHERE 1 = 1\r\n  --indexstats.avg_fragmentation_in_percent , e.g. >10, you can specify any number in percent \r\n  and ind.Name is not null \r\nORDER BY indexstats.avg_fragmentation_in_percent DESC\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Fala Malta! Voc\u00eas j\u00e1 ouviram fala em fragmenta\u00e7\u00e3o dos \u00edndices ? Em um ambiente de banco de dados a otimiza\u00e7\u00e3o e desempenho s\u00e3o cruciais para garantir que as consultas sejam executadas de forma eficiente. Uma parte fundamental desse processo, que vem ap\u00f3s a cria\u00e7\u00e3o correta de \u00edndices, \u00e9 a manuten\u00e7\u00e3o dos \u00edndices, e isso inclui [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":734,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[11],"_links":{"self":[{"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/posts\/93"}],"collection":[{"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":10,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":726,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/posts\/93\/revisions\/726"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/media\/734"}],"wp:attachment":[{"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jornadasql.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}