Você está na página 1de 6
2708/2018 Excluinda grandes volumes de dados | Masters ecm Masters ftp rum masters. com bi) ‘ueloper Store fpetorarar shop ag no eerste) ‘Crinengbespifearotcresoimastertcam a] Duin TECH ntpsiimastersech . y Deletepesmoemmmmuensenyecinens (hteps:/rwwwtacebook.com/PortaliMasters) _(https:/twitter.com/iMa teps:iasterscom.br/back-end) ® mobiethtpei/imasters. com rimobile) @ Front Enaintps:imasterscom.br/tront-end) © devsecOos{hitosmasters.com br/devsecops) © Design & uxtheps:iimasters comorsesign~x) © batainttpssimastere com or/ata) @ Ais « Microsservigosthrps:imasters com briapis-microsservicos) © tot e makersihtps:simasters.com brfiot- makers) ance DE oAbos QT PEUHIAETRS COM MADATAMANCD-OF-04D05) Excluindo grandes volumes de dados ne Consultorsénior na Wierosof, na rea do Data insights para América Latina. Especalista em bancos de dados, & colunista om diversos portais de 7! “do Brasie do exterior, com mals de 100 artigos tecnices publeades. € também co-produtor do DatabaseCast,primelro podeast brasileiro sobre Methorando a Experincia do UsuSrio com Azure Search Parte 02: gerenclando os documentos (htps/fimasters.com.bridesign-ux/melhorando- xporiencia-do-usuario-com-azure-eenreh-parte-02-gorenclando-o=- documentos) ch - Parte ot clande » servigo (htzpi/imasters.com br/design-uximelhorando-experioncla- aure-eareheparte-OF-eiando-o-servis) Methorando a Experénela do Ususrio com Azur 5 ‘SQL Server: audtando dadoe com tabelas tempore (hitps:/imaster.com.br/data/sql-server-auditando-dados-com-tabelas-temporals) hitps:fimasters.com bribanco-de-dados/exclindo-grandes-volumes-de-dados 6 27/08/2018 Excluinda grandes volumes de dados | Masters D ia destes eu estava analisando solugées para um problema de crescimento exagerado do arquivo de log durante o expurgo de dados de uma tabela muito grande. E resolvi fazer uma pesquisa para ver um mode eficiante de evitar o problema quando a peracio de expurgo fosse efetuada de fato. Até aqui, nenhuma novidade. Quem nunca perdeu tempo trabalhando em solugses para problemas que ninguém lembrou que poderiam acontocer? ‘A questo é simples. Quando pracisamos limpar uma tabela intelra, basta usar o comando TRUNCATE. A tabola serd zerada @ os registros excluidos no serdo registrados no arquivo de log. Nao importa se sua tabela tem 100 registros ou 100 mithdes, 0 TRUNCATE resolve, Mas a coisa muda completamente quando precisamos expurgar parte dos dados da tabela. Nestes casos precisamos usar © comanda DELETE e ai cada registro excluido sera gravado no log do banco de dados. Porém se a quantidade de registro ‘or muito grande ou se cada rogistro tiver um tamanho muito grande, as chances de acontecer problemas com o tamanho do arquivo de log sio enormes. excluida Se 0 arquivo de log foi configurado para no exceder um tamanho maximo, ele pode multe bem crescer até este limite e entio ‘eausard um erro quando precisar erescer mais, Por outro lado, se 0 espago disponivel no seu disco for pequeno, o arquivo de log pode crescer até o panto de lotar este disco. E novamente a operagio vai d ddados vai para. erro, Plor de tudo & aue nos dois casos seu banco de No caso que eu estava estudando, eu deveria limpar cerca de 8 milhdes de registros de uma tabela que tinha um total de 25, rmilhdes. Esta tabela ocupava cerca de 40 Gb no arquivo de dados e, portanto, 0 espaco ocupado pelos registros a serem excluldos era de cerca de 12,8 Gb (40 Gb * 8 / 28). Ou seja, era de se esperar que meu arquivo de log registrasse 12,8 Gb de dados. ‘A premissa para execugio deste expurgo era que ele seria executado “online”, ou seja, o banca de dadas nio poderia parar de forma enhuma, Mas eu sabia que 0 tamanho maximo definido para o arquivo de log era de 10 Gb (por razées que no so relevantes neste momento). Ou seja, esta transacde fatalmente iria estourar o tamanho maximo do arquivo de log. Para minha sorte, minha pesquisa me levou a um férum onde havia uma sugestio muita interessante, praposta por Kevin Aenmey (netpufstackovertlow.com/users/464699/kevin-aenmey), que compartilho aqui com vocé aqui (httpsfstackoverflow.com/questions/11230225/how-to-efficientiy-delete-rows-while-not-using-truncate-table-in-a-600-000-rows). ‘A ideia proposta é usar a cldusula TOP para executar © comando DELETE @ em seguida forgar um lago simples para que cada comando DELETE se repita até que uma determinada condig&o seja satisfelta, Desta maneira, as operagbes so executadas em Lote do N registros e cada lote é uma transagio individual Isso poderia resolver meu problema, porque a minha base de dados usava o modelo de recuperacio completa (ou “full recovery modal” se prefer’). € a cada 15 rin acontecia um backup de log que, naturalmente, excluia do arquivo de log as transagées “comitadas’ Observe que este backup de log ndo Iria me salvar se eu rodasse o expurgo em uma inica transagio. Isso porque a transagdo ainda estariaincompleta quando rodasse 0 backup de log 2, portanto, © arquive de log néo seria truncado, Restava ainda fazer algumas estimativas para ter certeza que eu nfo teria problemas quando executasse o expurgo em ambiente de produc, Eu adaptel a ideia do Kevin Aenmoy (http:/stackoverflow.com/users/1464689/kovin-aenmey) para 0 meu caso, onde registros seriam excluides com base na sua data de referdncia. Este script ¢ apresentado a seguir Listagem 1: script usado no teste hitps:fimasters.com bribanco-de-dados/exclindo-grandes-volumes-de-dados 216 2708/2018 Excluinda grandes volumes de dados | Masters -+ expunge base nistontea 5 6 | -> ata ce corte (Elca na base a partis desta data) 7 | dectase aaata.conte sal Laatet ine a | sec qaata corte = 12015-2201 ° 1a. | -+ contador de execusces st | dectaze gcontador int 12 | set qeontador = @ 4 | = tage com a updo desesaae 1s | detecevore: 1g | OELETE Tor(s#990) FROM TabeLa WHERE OataReterencia < gdata_corte a7 | set qcontador = qcontador + 1 sg | prive ‘rodada * + cast(gcontador as varchar(1@)) + '~ 108 registros exclutdos” 20 | TF EXESTSCSELECT top 1 ‘x! FROM TabeLa WHERE OataReferencia < adata_corte ) z1| goto deteterore E bem facil calcular 0 nimero de transagbes que poderiam ser logadas antes do arquive alcangar seu tamanho maximo, © memorial de célcule & mostrado na Tabela 1 @ a conclusio era que, mesmo fracionando o expurgo em vérias transagSes, ndo seria possivel logar todas as transagSes sem truncar o arquivo de log: ele tinha capacidade para registrar 625 transacées, mas eu iria executar cerca de 800 transagées, ‘Tabela 1: Memorial de calcula do niimero maximo de transagées logadas Espace total ocupade no log. ob 128 sa.ann77a ke quantidade de registros excluidos rogistros 2.000.000 ‘tamanho de cada registro 17 Kb/registre quantidade de registros por transagéo registros 10.000 Espago ocupado por transagao sT7TaKb Me 164 Espaco inicial ocupado no arquivo de log Me ‘Tamanho maximo do arquivo de log cb 100 me 10.2400 [Nimero maximo de transag6es aceitas no log transagées 625 Numero previsto de transages transagées 800 Estes eéleulos mostraram que era essencial que houvesse um backup de log durante a execugo do expurge. Come eu comentel anteriormente, este backup ocorria a cada 15 minutos. hitps:/imasters.com bribanco-de-dadoslexclundo-grandes-volumes-de-dados 36 2708/2018 Excluinda grandes volumes de dados | Masters Fiz entéo um teste répida com uma transagio de 10 mil registros. O tempo de execugio apurado foi de S segundos (obviamente fiz lum rallback em seguida, pois isso era apenas um teste), Portanto, para minha sorte, o tempo total de duragio do procedimento excederia em muito o prazo de 15 min necessario para a lmpeza do log (800 transagdes X 5 segundos => aproximadamente 1 hora 7 minutos. com 0 planejamento concluido, pude executar a operagdo de expurgo no meu banco de dados de produgia sem nenhum Imprevisto. A Figura 1 mostra estes resultados. Figura: evidéncia da execugio de 629 transagées afetando 8,260,942 registros: (nttps:imasters.com.br/banco-de-dados/excluindo-grandes-volumes-de-dados/attachment/we50/) O leitor mais atente vai notar na Figura 1 que o niimero real de registros expurgados passcu dos 8 milhdes que eu usel no memorial de c&lculo, Na verdade, eu havia apurade 0 nlimero exato de registros lago no primeiro passo do meu pracedimento, Eu apenas ‘mostrei numeros redondos neste artigo para facilitar a didética do memorial de céleulo. Na realidade, a preciséo dos nimeros é essencial para um bom planejamento. Eu recomendo que vocé observe isso quando fizer estudos na sua base de dados, Porque, afinal, DBAs odelam surpresas, Especialmente em ambiente de produgio uJ. ‘Abrago! Outras referéncias » RANDAL, Paul S. Understanding Logging and Recovery in SQL Server. Microsoft Technet Magazine. Fevereiro/2008, http:/technetimicrosoft.com/en-us/magazine/2008,02.logging.aspx (nttpuftechnet microsott.com/en-us/magazine/2009.02 logging aspx) MICROSOFT SUPPORT. A transaction log grows unexpectedly or becomes full in SQL Server. MICROSOFT KNOWLEDEGE BASE ~ [Aticle 1D; 317975, http:l/support.mierosoft.com/kb/31737S/en-us (nttpl/support.microsoft.com/kb/317975/en-us) & De 0 210, 0 quanto vocd recomendaria este artigo para um amigo? 0 asrios pusucnoos pon ese To wasn avn (res theres COM ERPERI WAGNER CRKELIND > Hethorando a Experléneia do Usudso com Azure Search ~ Parte 02: gerenclando os documentos (htps:imasters.com.b/design-wx/methorando- ‘eperiencia-do-seuario-com-azure-search-parte-O2-gerencianda-os-documentos) Ag aie (Tos tASTENS COM ERPERLWAER-CRNELID > Melhorando a Experlénela do Usudlo com Azure Search ~ Part Ol: clando o servic (htps/fimasters. com be/deslgn-ux/melnorande-experlencla-do- Usuario-com?azure-searcheparte-O¥-crlando-o-serde) \Wgun cave (ros tasTES COM ERPERLWAIER-CRNELIND > rver-audtando~ SOL Server: audtando dados com tabelas temporals(hitps:/imasters.com bridata/sals fados-com-tabelas-temporais) ‘easy oven errosiiastens coment AER CRNELI) > Introdugdo a0 LUIS ~ Parte 4: aplicagio em produsdo (https:fimasters.combridevsecopsyintroduceo. ‘npc rremamasen com RPA eMHONE-CRNEL) D hitps:fimasters.com bribanco-de-dados/exclindo-grandes-volumes-de-dados ais 2708/2018 Excluinda grandes volumes de dados | Masters Ineroduglo 20 LUIS ~ Parte 02 Trsinando Modelos (htpsifimasters.com br/cloud/introdueao-n0-Lus-parte-02-treinando-medelos) AONE avn (TTP AETENScOMBRPER A MADER CRRELIND > IntrodugSo a0 LUIS ~ Parte 02 eviande modelos (htps:lfimasters.com.br/eloud/intraducao-a0-lus-parte-02-criando-medelos) Wagner Crivelin 2 ra arigote) Consultor Sénior na Microsoft, na area de Data Insights nrvesnveerssettanuvmenen, ata América Latina, Especialsta em bancos de dados, & : ‘ven clunista em diversos portais de Tido Brasil © do exterior, ‘cam mais de 100 artigos técnicos publicados. € também co-produtar do DatabaseCast,primeiro podcast brasileiro sobre bancos de dados. comentiros Classica por Mae antigen ‘Adicionar um comentario, ate projete 6 oferecido pelas empresas Selo itesd movile Intpsrwwrvccartavelo.com by) (httpssfiwwitinkedin.com/jobs/search/?___(htp:/lwwmovile.com/jobs) (nepsiliworwcartaceio.com.) { c=2476458#036;location=Mundialmente&s#038:\ocationid=OTHERS worldwide Oi. cele Bootie (httpdoveloporsoriginaL.com bx) (heepsifdesenvolvedorescielo.com.br/api- _utps:swuwdlalhost.combr/? portal/) utm_campaign=patrocinio_iMasters FIAP sou ieee Chitpstwetiap.combr/? (tpugama.academy/pt/programas/experiencdtp:Jivwwshostgator.com br/? LUtm_source=imastersbutm_medium=logetm_campalgn=iMasters_site-Ip- rodapea#o36;utm campaignsimasters2018) — gama_experience-sp~ ‘devs8i#038;utm_medium=cpc&#O38;utm_source=iMasters_sitea#038;utm_conten imasters2018&utm_f (hetps:liwwvwidexo.com.be/) (beepsllwwimpacta.com.br) (nttps:dtwuvw.kinghost.com.br/) eyoweo locaweb Bromenne (nttp:/lambda3.com.br/) (nttps:stwwlocaweb.com.br/? (https:/fpagseguro.uol.com.br/) hitps:fimasters.com bribanco-de-dados/exclindo-grandes-volumes-de-dados 56 2708/2018 Excluinda grandes volumes de dados | Masters ‘utm_campaignsportalimastersutm_source=portalimasters&utm_medium=nev rede. div vee (hetpsitwwwauserede.com.br/) (httpsi//br.resellerclub.com/webpro? (https:/fucthost.uol.com.br/) (http wwwzarpsystem.com.br/) Este projeto 6 apoiedo pelas empresas tech sb Armee (https://imasterstech/) (http:s/portal.embratel.com.br/cloud/index.phpinttps://gerencianet.com.br/tp/imasters/) (nteps:ifpagarme/) Newsletter contelnioa epecaiecurados por noese seule @_ quate oseue-mar @ wasters ene se non orrrstmasren conta rguene-tseauron) rom octPsronuamasrens.comn “Tuas (ToBI ETEMASTESE WASTERECOM.AY hitps:fimasters.com bribanco-de-dados/exclindo-grandes-volumes-de-dados as

Você também pode gostar