O mecanismo de armazenamento refere-se ao tipo de tabela, que determina como as tabelas são armazenadas no computador. Este artigo apresenta os mecanismos de armazenamento suportados pelo banco de dados em nuvem MySQL.
InnoDB
O mecanismo InnoDB, o mecanismo de armazenamento OLTP mais utilizado, emprega técnicas de Controle de Concorrência Multiversão (MVCC) e bloqueio em nível de linha para oferecer alto desempenho e capacidade confiável de processamento transacional. Em comparação com outros mecanismos de armazenamento do MySQL, o InnoDB oferece melhor integridade de dados, incluindo chaves estrangeiras e rollback, além de funcionalidades de consulta mais avançadas. Simultaneamente, a Tencent Cloud implementou diversas otimizações de kernel no InnoDB, conferindo-lhe vantagem de desempenho mais evidente, sendo amplamente aplicado em cenários de alta performance e alta concorrência.
O banco de dados em nuvem MySQL suporta o mecanismo de armazenamento InnoDB por padrão e, nas versões do MySQL 5.6 e superiores, não suporta mais os mecanismos MyISAM e Memory. As principais razões são as seguintes:
Atualmente, nas versões do MySQL, o TencentDB implementou diversas otimizações de kernel no InnoDB, já possuindo vantagens significativas de desempenho.
O MyISAM adota o mecanismo de bloqueio em nível de tabela, enquanto o InnoDB utiliza bloqueio em nível de linha. Normalmente, o InnoDB oferece maior eficiência de escrita.
Observação:
O bloqueio em nível de tabela é o tipo de bloqueio com a granularidade mais ampla no MySQL, significando que toda a tabela envolvida na operação atual é bloqueada.
O bloqueio em nível de linha é o tipo de bloqueio com a granularidade mais fina no MySQL, significando que apenas a linha envolvida na operação atual é bloqueada.
O MyISAM apresenta falhas na proteção da integridade dos dados, e essas deficiências podem levar à corrupção ou até mesmo à perda de dados do banco de dados. Além disso, muitas dessas falhas são problemas de design que não podem ser corrigidos sem comprometer a compatibilidade.
A migração do MyISAM e do Memory para o InnoDB tem baixo custo. A maioria das aplicações requer apenas alterar o código de criação de tabelas para concluir a migração.
O desenvolvimento do MyISAM está em transição para o InnoDB. Na versão mais recente do MySQL 8.0, as tabelas do sistema já adotam o InnoDB.
O Memory não pode garantir a integridade dos dados. Em caso de reinicialização ou troca de mestre/escravo da instância, todos os dados na tabela serão perdidos. Recomendamos que você migre para o InnoDB o mais rápido possível.
RocksDB motor
O RocksDB é um armazenamento KV (chave-valor) persistente de alto desempenho extremamente popular. O TXRocks é um mecanismo de armazenamento transacional desenvolvido pela equipe TXSQL da Tencent Cloud com base nisso. Beneficiando-se da estrutura de armazenamento LSM Tree do RocksDB, o mecanismo de armazenamento transacional TXRocks reduz o desperdício de páginas semiocupadas e fragmentação do InnoDB, além de utilizar armazenamento em formato compacto. Assim, mantendo desempenho comparável ao InnoDB, o TXRocks economiza metade ou mais do espaço de armazenamento, sendo ideal para negócios com grandes volumes de dados que exigem alto desempenho em operações transacionais de leitura/gravação.
Mais economia de espaço de armazenamento
Em comparação com a estrutura de índice B+Tree usada pelo InnoDB, a LSM Tree pode economizar uma proporção considerável de espaço de armazenamento.
Amplificação de escrita mais baixa
O InnoDB adota modificações In-Place, onde mesmo a alteração de uma única linha pode exigir a gravação no disco de uma página inteira, resultando em alta amplificação de escrita e escrita aleatória. O RocksDB utiliza abordagem Append-Only, apresentando amplificação de escrita mais baixa em comparação.
O motor LibraDB
O mecanismo LibraDB, ou mecanismo de análise somente leitura, é um novo recurso suportado pelo TencentDB for MySQL. Este recurso é fornecido com base em instâncias somente leitura. Seu design de mecanismo plugável permite criação e destruição flexíveis, oferecendo aos usuários capacidade de processamento massivo de dados e análise complexa em tempo real e de alta eficiência. O mecanismo LibraDB serve principalmente a consultas analíticas eficientes, sendo um componente de análise somente leitura estendido que fornece processamento de SQL complexo com alto desempenho em tempo real. Utilizando a capacidade de armazenamento colunar do LibraDB, o mecanismo de execução paralela vetorizada e o otimizador estendido com execução paralela distribuída, os clientes podem experimentar facilmente capacidades analíticas eficientes diretamente no banco de dados. Além disso, o armazenamento colunar do LibraDB foi otimizado especificamente para alterações de alto QPS e ACID transacional, garantindo a atualidade e consistência dos dados nas consultas.
Computação paralela em massa MPP
Suporta a arquitetura MPP (Massively Parallel Processing), capaz de melhorar o desempenho do processamento de dados distribuindo a carga de trabalho entre vários nós.
Mecanismo de execução vetorizada
No mecanismo LibraDB, é implementado um modo de execução vetorizada. Para dados colunares na memória, um lote (batch) invoca instruções SIMD uma vez, reduzindo o número de chamadas de função e diminuindo os cache misses.
Suporta armazenamento colunar em cenários de alteração de alta velocidade
O mecanismo LibraDB, por meio de otimizações e suporte na camada de armazenamento, garante a consistência dos dados durante alterações em cenários de alta concorrência, evitando atrasos na análise causados pela latência de dados proveniente de alterações frequentes nas instâncias de leitura/gravação, o que poderia fazer o usuário perder a janela de análise.
Capacidade de carregamento de dados especificada
O mecanismo LibraDB suporta a capacidade de carregamento de objetos especificados. É possível definir os objetos do LibraDB a serem carregados através das configurações do console de carregamento de dados ou por comandos SQL na linha de comando.
Versões e arquiteturas suportadas por cada mecanismo
|
InnoDB | MySQL 5.6、5.7、8.0 | nó único, dois nós, três nós, versão cloud disk |
RocksDB motor | MySQL 5.7、8.0 | dois nós |
O motor LibraDB | MySQL 5.7、8.0 | dois nós, três nós |