{"id":122,"date":"2011-11-08T15:55:33","date_gmt":"2011-11-08T18:55:33","guid":{"rendered":"http:\/\/wagnerbianchi.com\/blog\/?p=122"},"modified":"2011-11-08T15:57:54","modified_gmt":"2011-11-08T18:57:54","slug":"compressao-de-dados-com-archive-storage-engine","status":"publish","type":"post","link":"http:\/\/wagnerbianchi.com\/blog\/?p=122","title":{"rendered":"Compress\u00e3o de dados entre Storage Engines"},"content":{"rendered":"<p>Muitos s\u00e3o os problemas quando se tem uma empresa que utiliza qualquer um dos produtos de bancos de dados existentes no mercado e n\u00e3o libera os investimentos necess\u00e1rios em estrutura, sendo a quest\u00e3o relacionada a falta de espa\u00e7o em disco um dos maiores incidentes ocorridos em bases de dados. Com isso, j\u00e1 que n\u00e3o h\u00e1 recursos para que os discos sejam expandidos ou mesmo, um espa\u00e7o em cloud seja disponibilizado, o administrador de bancos de dados dever\u00e1 se munir de compet\u00eancia necess\u00e1ria para analisar a base de dados e utilizar a melhor compress\u00e3o de dados que um dentre todos os storage engines nativos do MySQL apresenta. Estou introduzindo este post para falar sobre o Archive Storage Engine.<\/p>\n<p>Tenho um cliente em especial que tem uma grande base de dados para atender a um sistema de work-flow, ou seja, este sistema armazena dados em um banco de dados localizado em uma inst\u00e2ncia do MySQL, sendo que, temos l\u00e1 v\u00e1rias tabelas de movimenta\u00e7\u00e3o de dados e outra que recebem somente INSERT e SELECT &#8211; ESCRITA e LEITURA &#8211; que s\u00e3o dados de parametriza\u00e7\u00e3o e programa\u00e7\u00e3o da produ\u00e7\u00e3o das v\u00e1rias esteiras aonde os insumos de produ\u00e7\u00e3o s\u00e3o encaixados no similar para que este se torne ao final, um produto acabado. Bom, sem este par\u00e2metros, o sistema n\u00e3o consegue, ent\u00e3o, filtrar as requisi\u00e7\u00f5es dos produtos que devem ser mais ou menos produzidos e as suas caracter\u00edsticas. Estas tabelas que recebem somente o INSERT de dados, todos os dias s\u00e3o alimentadas pela programa\u00e7\u00e3o de produ\u00e7\u00e3o realizada pelos engenheiros e assim por diante.<\/p>\n<p>Pensando em economizar espa\u00e7o, j\u00e1 que os discos n\u00e3o poderiam ser adquiridos neste momento (acho que nem t\u00e3o cedo), pensei que poder\u00edamos pegar as tabelas de par\u00e2metros de produ\u00e7\u00e3o &#8211; que representam 38% do espa\u00e7o em disco alocado para dados e \u00edndices &#8211; e transform\u00e1-las de InnoDB para Archive, mas n\u00e3o tinha no\u00e7\u00e3o do quanto tais tabelas poderiam ter seus dados comprimidos. Assim, realizei o seguinte teste:<\/p>\n<p>1-) Criei um tabela tb_innodb com uma coluna id do tipo INT, controlada pelo engine InnoDB;<\/p>\n<p>2-) Criei um tabela tb_myisam com uma coluna id do tipo INT, controlada pelo engine MyISAM;<\/p>\n<p>3-) Criei um tabela tb_archive com uma coluna id do tipo INT, controlada pelo engine Archive;<\/p>\n<p>4-) Criei uma stored procedure para dar carga de 1.000.000.000.000 de linhas nas tabelas criadas;<\/p>\n<p>Ao final, eu tinha como consultar o INFORMATION_SCHEMA, utilizando as informa\u00e7\u00f5es da tabela TABLES para verificar o tamanho de dados e das duas tabelas e comparar os resultados com foco na compress\u00e3o de ambos os engines. O resultado foi o seguinte:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/wbianchi.files.wordpress.com\/2010\/07\/compression.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-118\" title=\"compression\" src=\"http:\/\/wbianchi.files.wordpress.com\/2010\/07\/compression.png\" alt=\"\" width=\"441\" height=\"153\" \/><\/a><\/p>\n<p>Veja que, enquanto os dados recuperados em megabytes de uma tabela InnoDB tem um tamanho de pouco mais de 30MB, uam tabela com o mesma quantidade de dados, mas controlada pelo Storage Engine Archive tem menos de 10% daquele tamanho. Coloquei a tabela MyISAM no meio deste teste somente para ter tamb\u00e9m uma no\u00e7\u00e3o do seu n\u00edvel de compress\u00e3o. Assim, conseguimos liberar grande quantidade de espa\u00e7o em disco para tabela que sofrem somente SELECT e INSERT.<\/p>\n<p><strong>Aten\u00e7\u00e3o:<\/strong> tabelas Archive somente aceitar\u00e3o SELECT e INSERT, <strong>outros comandos falhar\u00e3o<\/strong>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Muitos s\u00e3o os problemas quando se tem uma empresa que utiliza qualquer um dos produtos de bancos de dados existentes no mercado e n\u00e3o libera os investimentos necess\u00e1rios em estrutura, sendo a quest\u00e3o relacionada a falta de espa\u00e7o em disco um dos maiores incidentes ocorridos em bases de dados. Com isso, j\u00e1 que n\u00e3o h\u00e1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/122"}],"collection":[{"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=122"}],"version-history":[{"count":4,"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":126,"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions\/126"}],"wp:attachment":[{"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wagnerbianchi.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}