MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Escolha do mecanismo de armazenamento:Aria


A Plataforma MariaDB inclui uma variedade de mecanismos de armazenamento como componentes conectáveis ​​do MariaDB Enterprise Server. Isso permite que você escolha o mecanismo de armazenamento mais adequado à carga de trabalho de um determinado banco de dados ou tabela.

O mecanismo de armazenamento Aria foi desenvolvido como um substituto seguro contra falhas para o MyISAM e está em desenvolvimento ativo desde 2007. Quando o MariaDB Server é reiniciado após uma falha, o Aria recupera todas as tabelas para o estado no início de uma instrução ou no início da última instrução LOCK TABLES.

Mecanismos de armazenamento MariaDB


Recomendações atuais do mecanismo de armazenamento com base na carga de trabalho:
  • Cargas de trabalho de leitura intensa:Aria
  • Propósito geral:InnoDB
  • ÁCIDO:InnoDB
  • Cargas de trabalho pesadas de gravação:MyRocks
  • Compressão:MyRocks
  • Fragmentado:Aranha
  • Cargas de trabalho analíticas:MariaDB ColumnStore

Por que usar Aria para MariaDB


Enquanto o InnoDB é o mecanismo de armazenamento padrão para bancos de dados criados com o MariaDB, o Aria é usado para a maioria das tabelas do sistema interno do MariaDB Enterprise Server 10.4. O Aria ocupa pouco espaço e permite a fácil cópia entre sistemas e é particularmente adequado para cargas de trabalho de leitura intensa. O Aria tem um formato de armazenamento avançado baseado em página que permite um desempenho de cache superior e é otimizado para simultaneidade.

Em ambientes do mundo real, o Aria produz melhores resultados para construções agregadas (como GROUP BY ou ORDER BY) que prevalecem em análises e processamento de transações. A análise e o processamento transacional encontram coisas simples, como totais, máximos e estatísticas. A maioria dos aplicativos depende muito de consultas que usam essas funções agregadas.
O MariaDB usa o mecanismo de armazenamento Aria para todas as tabelas temporárias internas em disco. Como essas tabelas geralmente são criadas internamente para executar consultas GROUP BY e DISTINCT, esses tipos de consultas podem se beneficiar do desempenho do Aria, mesmo que a tabela consultada use um mecanismo diferente.

O mecanismo de armazenamento Aria é compilado por padrão no MariaDB. O Aria está incluído no MariaDB Server (Enterprise e Community) sem instalação ou configuração adicional.

Considerações da Ária


A melhor forma de usar o Aria dependerá do caso de uso, design da tabela, padrões de acesso (consultas SQL), metas de desempenho e metas de recuperação.
Vantagens de Aria Desvantagens de Aria
  • Inserção simultânea na mesma tabela de várias fontes
  • Carregamento em massa ineficiente
  • Cache por capacidade de página
  • Bloqueio no nível da tabela
  • Com backup eficiente do MariaDB Enterprise Backup

  • Não tem suporte a chave estrangeira nativa
  • Formato de linha PAGE aprimorado:à prova de falhas por padrão; operações; fornece uma notável melhoria de velocidade para cache de dados, especialmente no Windows
  • Falta suporte INSERT DELAYED.
  • Tabelas e índices à prova de falhas
  • Limitações de cache:vários caches de chave e depende do cache de disco do SO
  • Recuperação de falhas para o início de uma última instrução ou bloqueio
  • sobrecarga do formato PAGE:tamanho mínimo do arquivo 16K; armazenamento de pequenas linhas; mesmo tamanho de página para índice e dados.
  • ÍNDICE DE CARGA otimizado
  • Não suporta transações (ou seja, ROLLBACK e COMMIT)
  • Compatível com os formatos MyISAM ROW e PAGE
  • Baixa sobrecarga

  • Considere usar Aria:
    • Se seu aplicativo fizer muitas pesquisas em TEXTO COMPLETO.
    • Se seu aplicativo fizer muitas consultas GROUP BY.
    • Se seu aplicativo não precisar de conformidade com ACID ou chaves estrangeiras.
    • Se seu aplicativo atualmente usa MyISAM e requer um mecanismo mais avançado para permitir melhor velocidade, backups e recuperação automática de falhas.

    Comparações de desempenho


    Uma coisa é comparar consultas isoladas e outra é ver exemplos do mundo real. Fizemos alguns testes comparando Aria, InnoDB e MyISAM.
    Resultados de desempenho
    InnoDB Aria MyISAM
    SQL 1 2.389 0,580 0,634
    SQL 2 2.169 0,530 0,598
    Benchmark simples:Aria vs MyISAM vs InnoDB

    Neste benchmark simples, uma tabela foi criada e preenchida com 2 milhões de linhas. As consultas GROUP BY e ORDER BY foram feitas e copiadas em todos os três mecanismos de armazenamento alternativos:InnoDB, Aria e MyISAM. Cada teste foi executado 10 vezes, com o tempo médio (segundos) registrado para todos os testes.

    Configuração e comandos usados ​​para teste:
    INSERT INTO fact VALUES (1,1,'Justin',md5(''), .1);
    INSERT INTO fact SELECT FLOOR(1+ rand()*9999), FLOOR(1 + rand()*499),
    (select name from names where id = 1 + rand() * 4),
    MD5(1+rand()*9999), rand()
    FROM fact;

    Continue executando a inserção acima até que cerca de 2 milhões de linhas estejam na tabela.
    MariaDB [test2]> SELECT count(*) from fact;
    +----------+
    | count(*) |
    +----------+
    | 2097152 |
    +----------+
    MariaDB [test2]> SHOW CREATE TABLE fact;
    +-------+-------------------------------
    | Table | Create Table
    +-------+-------------------------------
    | fact | CREATE TABLE `fact` (
    `dim1` int(11) DEFAULT NULL, `dim2` int(11) DEFAULT NULL,
     `name` varchar(20) DEFAULT NULL, `hash` varchar(32) DEFAULT NULL,
     `measure1` double DEFAULT NULL)
    ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    Confirme se há uma boa proporção de linhas distintas versus linhas totais:
    MariaDB [test2]> SELECT count(distinct (dim1)) from fact;
    +------------------------+
    | count(distinct (dim1)) |
    +------------------------+
    | 9999              	 |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (dim2)) from fact;
    +------------------------+
    | count(distinct (dim2)) |
    +------------------------+
    | 499                    |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (name)) from fact;
    +------------------------+
    | count(distinct (name)) |
    +------------------------+
    | 1                      |
    +------------------------+
    

    Ária
    CREATE TABLE `test2`.`fact2` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    ENGINE=ARIA TRANSACTIONAL=1;
    INSERT INTO `test2`.`fact2` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    MeuISAM
    CREATE TABLE `test2`.`fact3` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    COLLATE='latin1_swedish_ci' ENGINE=MyISAM;
    INSERT INTO `test2`.`fact3` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    Teste 2 sqls diferentes no InnoDB, Aria e MyISAM:

    — sql1:
    SELECT dim1, dim2 from fact group by dim1 order by dim1; 
    -- 9999 rows in set

    — sql2:
    SELECT dim1, dim2 from fact group by dim2 order by dim2; 
    -- 499 rows in set

    Recapitulação do comparativo de mercado


    Testes mostram que Aria é muito mais rápido no nível GROUP BY do que InnoDB ou MyISAM. O Aria é um pouco mais rápido que o MyISAM e garante um ambiente seguro contra falhas. Os testes de desempenho revelaram que o Aria é quatro vezes mais rápido que o InnoDB. Devido às diferenças de casos de uso, cada um deve passar por testes no MariaDB Enterprise Server utilizando tanto Aria quanto InnoDB (ou outro, dependendo da necessidade).

    Resumo


    Dependendo da sua carga de trabalho, o Aria pode oferecer vantagens de desempenho. Como está incluído no MariaDB Server e pode ser aplicado por banco de dados ou por tabela (ENGINE=ARIA), você pode testar o desempenho de sua carga de trabalho específica sem custo adicional e muito pouco esforço adicional – basta conectá-lo e experimentá-lo.

    Para saber mais sobre mecanismos de armazenamento e arquitetura de armazenamento, visite mecanismos de armazenamento otimizados para carga de trabalho.