Benefícios da Barracuda e Compressão

12

Eu tenho lido sobre os formatos de arquivo do MySQL Antelope e Barracuda há um tempo atrás, e me pergunto se eu poderia me beneficiar com o Barracuda e o Compression.

Meu servidor está atualmente usando o Antelope, pois é o padrão do MySQL.
Eu tive muitos problemas de memória devido ao grande banco de dados que tenho. Meu banco de dados está aumentando a cada dia.

Parece que a compactação está trazendo benefícios para algumas pessoas, como:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

Entendo que a memória e o espaço em disco podem ser menores, mas não tenho certeza se entendi isso (citado no artigo):
"~ 5% da carga da CPU de acordo com a parte superior (de 80 a 100% aguardando E / S)
0,01 tempo médio de pesquisa de segundos por chave primária (de 1 a 20 segundos antes da conversão) "

Eu pensei que essas duas coisas NÃO melhorariam, porque se os dados forem compactados, o servidor precisará descompactar para obter os dados originais novamente, então não faz sentido que o uso da CPU aumente?

Isso beneficia você em aplicativos intensivos de leitura / gravação? Você recomendaria que eu mudasse para Barracuda e compressão?

Você conhece algum problema do Barracuda?
Parece que a resposta da pergunta a seguir aponta alguns problemas, mas como é de 2011, eu diria que eles já foram corrigidos: /server/258022/mysql-innodb-how-to-switch -to-barracuda-format

Nuno
fonte

Respostas:

14

No que diz respeito a "Dinâmico" , o formato somente compactado do Barracuda, muito pouco mudou do compacto, principalmente sobre como os blobs (e quaisquer campos muito dinâmicos) são armazenados . Nunca tive problemas com compacto vs. dinâmico, portanto, posso recomendar com segurança a dinâmica do Barracuda. Lembre-se de que o Barracuda também suporta antigos formatos de linhas redundantes e compactos .

O artigo que você está mencionando provavelmente é muito antigo (5.1) e, como Peter Z., CEO da Percona, menciona os comentários, pode ser um pouco enganador. Isso não significa que a compactação não pode ser um grande ganho, dependendo das cargas de trabalho. No entanto, eu recomendaria que você o experimentasse nas versões> = 5.6, pois o Facebook e a Oracle fizeram muitas melhorias.

Como materiais de referência mais recentes, eu recomendaria:

Gosto particularmente dos materiais do Facebook, pois são terceiros (não há necessidade de uma agenda) e eles têm uma das maiores implementações do MySQL no mundo. Como você pode ver, eles tiveram configurações muito bem-sucedidas combinando tecnologia SSD com compactação.

Isso beneficiará você? Isso dependerá da sua carga de trabalho, conjunto de trabalho e configuração (IOPS, memória) . Dependendo do limite de IO, CPU ou memória, a compactação pode afetar negativamente em alguns casos, adicionando CPU extra, requisitos de memória (páginas compactadas e descompactadas são armazenadas no buffer pool do InnoDB) ou gerando muitas falhas de compactação, aumentando a latência. Também depende do tipo de dados: a compactação pode ajudar bastante com grandes blobs de texto, mas pode ser inútil com dados já compactados.

Na minha experiência, na prática, existem pessoas para as quais a compressão foi o santo graal do desempenho e estão muito felizes com isso, mas em outros casos, tivemos que reverter para dados não compactados, pois nenhum ganho foi obtido. Embora uma carga de trabalho de gravação muito pesada possa parecer um ambiente ruim para compactação, se no seu caso particular você não estiver vinculado à CPU e à memória, mas vinculado aos Iops, pode ser útil.

Em geral, é muito difícil prever resultados, geralmente você deve configurar um ambiente de teste para benchmarking e depois descobrir por que obtém resultados melhores ou piores (e assim você pode jogar com diferentes tamanhos de bloco, etc.). Barracuda é completamente seguro. A compressão pode ou não ser para você. E você sempre pode experimentar outros métodos de compactação, como a compactação de blobs no lado do cliente (por exemplo, se você acabar vinculado à CPU) ou outros mecanismos de terceiros como RocksDB e TokuDB , nos quais a compactação é uma grande prioridade, pois é focada em desempenho para conjuntos de dados maiores do que o InnoDB pode suportar.

Em poucas palavras: Os principais motivos para usar o Barracuda são o manuseio de BLOB, innodb_large_prefixcompatibilidade (índices grandes) e compactação. Dinâmico, no MySQL 8.0 agora é o formato de arquivo padrão.

jynus
fonte
1
Esta é uma resposta realmente IMPRESSIONANTE e clara! Faz todo o sentido e é exatamente o tipo de resposta que eu desejava. Você está mencionando o MySQL 5.6 (que é o que eu atualizei recentemente) e referindo o Facebook como um exemplo, como eu gosto, pois eles geralmente precisam superar os desafios antes de todos os outros. Infelizmente, não será fácil testar isso primeiro, pois um ambiente de teste não terá a mesma carga de CPU / IO / RAM da produção, mas, na verdade, vou tentar! Muito obrigado pelo seu tempo.
Nuno
Como o formato da linha pode ser escolhido no nível da tabela, isso oferece flexibilidade para testes de produção (após testes adequados em uma máquina separada). Essa abordagem, no entanto, potencialmente tornará a depuração e o benchmarking mais difíceis.
jynus
Sim, eu provavelmente poderia tentar converter algumas tabelas primeiro (talvez aquelas que não são tão grandes / usadas). No entanto, para os grandes, isso exigiria alguns períodos de inatividade, em vez de apenas um tempo de inatividade, onde eu converteria todos eles de uma só vez. Vou ter que ver qual é a melhor abordagem. Não entendo, no entanto, por que isso tornaria a depuração mais difícil. O que exatamente você quer dizer aqui? Muito obrigado.
Nuno
1
Você tem ferramentas como pt-online-schema-change percona.com/doc/percona-toolkit/2.2/… para recriar tabelas on-line. Eu apenas mencionei que misturar apenas algumas tabelas pode tornar mais difícil medir as alterações de CPU / memória / IOPs devido à alteração do mecanismo e diferenciá-las das alterações normais de carga ou devido às alterações de cache ao recriá-las. Também é difícil ver em uma máquina diferente com hardware diferente, então, boa sorte!
jynus
No ZFS, não é absolutamente nada bom ao usar o LZ4 no sistema de arquivos.
Denis Denisov