{"id":1469,"date":"2022-01-05T14:59:13","date_gmt":"2022-01-05T17:59:13","guid":{"rendered":"https:\/\/powertuning.com.br\/?p=1469"},"modified":"2022-05-30T11:59:02","modified_gmt":"2022-05-30T14:59:02","slug":"tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas","status":"publish","type":"post","link":"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/","title":{"rendered":"Tuning real em cliente com o ERP LINX &#8211; Job que demorava dias passou a rodar em 2 horas"},"content":{"rendered":"<p>Fala Pessoal, Tudo certo?<\/p>\n<p>Estamos realizando um Tuning em uma grande empresa, que tem lojas nos shoppings espalhados pelo pa\u00eds, e surgiu um caso que gostaria de compartilhar com voc\u00eas.<\/p>\n<p>Existia um job nesse ambiente que ficava rodando por 1 dia, 2 dias, 3 dias e o cliente cancelava a execu\u00e7\u00e3o manualmente:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1470\" data-permalink=\"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/job_antes\/\" data-orig-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_ANTES.png\" data-orig-size=\"288,230\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"JOB_ANTES\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_ANTES.png\" class=\"wp-image-1470 aligncenter\" src=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_ANTES.png\" alt=\"\" width=\"501\" height=\"400\" srcset=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_ANTES.png 288w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_ANTES-20x16.png 20w\" sizes=\"auto, (max-width: 501px) 100vw, 501px\" \/><\/p>\n<p>Olhando no Log da Whoisactive foi poss\u00edvel perceber que a cada um minuto apareciam duas queris acessando uma mesma tabela tempor\u00e1ria:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1472\" data-permalink=\"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/query-na-whoisactive\/\" data-orig-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive.png\" data-orig-size=\"1210,397\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"query na whoisactive\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive-1024x336.png\" class=\"wp-image-1472 aligncenter\" src=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive-300x98.png\" alt=\"\" width=\"903\" height=\"295\" srcset=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive-300x98.png 300w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive-1024x336.png 1024w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive-768x252.png 768w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive-20x7.png 20w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/query-na-whoisactive.png 1210w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/p>\n<p>Reparem na quantidade acumulada de leituras e cpu. wow!!!<\/p>\n<p>Estava consumindo bem do hardware desse ambiente.<\/p>\n<p>As duas queries que apareciam era em uma tabela tempor\u00e1ria que a procedure utilizava.<\/p>\n<div>\n<dl>\n<dd>\n<div data-tid=\"messageBodyContainer\">\n<div data-tid=\"messageBodyContent\">\n<div>\n<p><span style=\"background-color: transparent;\">SELECT TOP 1 &#8211;aqui tinha 6 variaveis recebendo o resultado de 6 colunas dessa tabela tempor\u00e1ria<\/span><\/p>\n<div>FROM \u00a0\u00a0#CUR_LOCALIZA_CONTA<\/div>\n<div>ORDER BY ID_ARQUIVO, ITEM_ARQUIVO<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div><\/div>\n<div data-tid=\"messageBodyContainer\">\n<div><\/div>\n<div>DELETE FROM #CUR_LOCALIZA_CONTA<br \/>\nWHERE ID_ARQUIVO = @ID_ARQUIVO_CUR<br \/>\nAND ITEM_ARQUIVO = @ITEM_ARQUIVO_CUR<\/div>\n<\/div>\n<\/dd>\n<\/dl>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Essa tabela devia ser muito grande para causar esse estrago todo, concordam?<\/p>\n<p>Nem precisamos ser um Fabiano Amorim para ver que se criar um \u00edndice por Id_ARQUIVO e ITEM_ARQUIVO, na primeira query vamos evitar o order by, porque o \u00edndice j\u00e1 estar\u00e1 ordenado e na segunda query o SQL Server deve fazer um seek r\u00e1pido para achar o registro ao inv\u00e9s de um scan (caso a tabela seja grande).<\/p>\n<p>Inclu\u00ed apenas essa linha dentro da procedure desse job:<\/p>\n<p>create clustered index SK01_#CUR_LOCALIZA_CONTA on #CUR_LOCALIZA_CONTA(ID_ARQUIVO,ITEM_ARQUIVO)<\/p>\n<p>&nbsp;<\/p>\n<p>Detalhe que a procedure era um monstro que chamava v\u00e1rios outros monstrinhos, mas eu n\u00e3o precisei debugar e nem abrir as milhares de linhas de c\u00f3digos para tomar minha primeira a\u00e7\u00e3o de Tuning.<\/p>\n<p>Nas pr\u00f3ximas duas execu\u00e7\u00f5es do JOB, ele finalmente finalizou com sucesso.<\/p>\n<p>De quase infinito (porque nunce chegou a acabar desde quando entrei no ambiente) para menos de 2 horas:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1471\" data-permalink=\"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/job_depois\/\" data-orig-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_DEPOIS.png\" data-orig-size=\"281,290\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"JOB_DEPOIS\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_DEPOIS.png\" class=\" wp-image-1471 aligncenter\" src=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_DEPOIS.png\" alt=\"\" width=\"434\" height=\"448\" srcset=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_DEPOIS.png 281w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/JOB_DEPOIS-20x20.png 20w\" sizes=\"auto, (max-width: 434px) 100vw, 434px\" \/><\/p>\n<p>Isso tudo com pouco tempo de an\u00e1lise. Se parar para ver passo a passo da proc, da at\u00e9 para melhorar mais, mas o objetivo desse post \u00e9 mostrar o grande ganho que conseguimos com uma an\u00e1lise bem simples que um DBA J\u00fanior conseguiria fazer.<\/p>\n<p>Como disse anteriormente, nem precisamos ser um Fabiano Amorim para fazer esse job rodar com sucesso. Claro que o Fabiano acharia mais coisas e faria mais r\u00e1pido do que eu. kkkk<\/p>\n<p>Feedback do gerente de TI:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1478\" data-permalink=\"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/whatsapp-cliente\/\" data-orig-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE.png\" data-orig-size=\"842,416\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"WHATSAPP CLIENTE\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE.png\" class=\"wp-image-1478 aligncenter\" src=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE-300x148.png\" alt=\"\" width=\"549\" height=\"271\" srcset=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE-300x148.png 300w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE-768x379.png 768w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE-20x10.png 20w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/WHATSAPP-CLIENTE.png 842w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Ele falou isso porque a procedure \u00e9 do ERP LINX e tem dezenas de coment\u00e1rios com as algera\u00e7\u00f5es que essa procedure teve desde 2013.<\/p>\n<p>Curti a ideia:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1477\" data-permalink=\"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/nome-na-proc\/\" data-orig-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/nome-na-proc.png\" data-orig-size=\"610,379\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"nome na proc\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/nome-na-proc.png\" class=\"wp-image-1477 aligncenter\" src=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/nome-na-proc-300x186.png\" alt=\"\" width=\"536\" height=\"332\" srcset=\"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/nome-na-proc-300x186.png 300w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/nome-na-proc-20x12.png 20w, https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/nome-na-proc.png 610w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/p>\n<p>Tamb\u00e9m coloquei meu nome da hist\u00f3ria dessa proc. =)<\/p>\n<p>\u00c9 isso pessoal. Depois de muito tempo escrevi um post.<\/p>\n<p>Subi esse aqui no blog da Power pois envolveu uma consultoria da Power Tuning e para dar uma movimentada por aqui tamb\u00e9m que est\u00e1 muito parado.<\/p>\n<p>&nbsp;<\/p>\n<p>Fabr\u00edcio Lima,<\/p>\n<p>CEO da Power Tuning<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Tudo certo? Estamos realizando um Tuning em uma grande empresa, que tem lojas nos shoppings espalhados pelo pa\u00eds, e surgiu um caso que gostaria de compartilhar com voc\u00eas. Existia um job nesse ambiente que ficava rodando por 1 dia, 2 dias, 3 dias e o cliente cancelava a execu\u00e7\u00e3o manualmente: &nbsp; Olhando no&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/powertuning.com.br\/blog\/tuning-real-em-cliente-com-o-erp-linx-job-que-demorava-dias-passou-a-rodar-em-2-horas\/\">Leia mais<\/a><\/p>\n","protected":false},"author":6,"featured_media":1487,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[62,60,59,63],"tags":[52,53,51,45,50,46,48,44,57,55,56,43,54,22,58,17,35,47,23,49],"class_list":["post-1469","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-casos-reais-de-clientes","category-linx","category-tuning","category-sql-server","tag-consultoria-performance","tag-consultoria-sql-server","tag-consultoria-tuning","tag-desempenho","tag-fabiano-amorim","tag-indices","tag-job-lento","tag-lentidao","tag-lentidao-linx","tag-lentidao-sql-server","tag-linx","tag-performance","tag-performance-sql-server","tag-power-tuning","tag-rotina-linx-lenta","tag-soupowertuning","tag-sql-server","tag-tabela-temporaria","tag-tuning","tag-whoisactive"],"jetpack_featured_media_url":"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/01\/blog.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/1469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1469"}],"version-history":[{"count":6,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/1469\/revisions"}],"predecessor-version":[{"id":1483,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/1469\/revisions\/1483"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/media\/1487"}],"wp:attachment":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}