Aqui falaremos sobre storage engines including InnoDB, TokuDB, MyISAM, Aria e MyRocks.
Storage vem de armazenar, guardar, local onde se guarda. Engine vem de motor. As engrenagens.
Os mecanismos de armazenamento ,ou Storage Engine, lidam com dados no nível físico. Os mecanismos de armazenamento(Storage Engine) são projetados para gerenciar com eficiência os arquivos de dados, os dados e os caches de índice.
Exibindo Engines(Motores) no SQL
Para mostrar todas os Storage Engine(mecanismos de armazenamento) disponíveis em um servidor, use a instrução show engines:
MariaDB [(none)]> show engines; +--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+ | CSV | YES | Stores tables as CSV files | NO | NO | NO | | MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO | | MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO | | SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES | | InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | +--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+ 8 rows in set (0,014 sec)
O resultado inclui uma coluna chamada support que indica se o mecanismo está disponível ou não. Também há a coluna comment que descreve cada engine.
No momento da criação de uma tabela, se não definirmos manualmente qual será a storage engine, possivelmente será definida InnoDB por padrão.
Como alternativa ao comando show engines, você pode consultar os mecanismos de armazenamento suportados na tabela information_schema.engines.
select * from information_schema.engines;
MariaDB [(none)]> select * from information_schema.engines; +--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+ | ENGINE | SUPPORT | COMMENT | TRANSACTIONS | XA | SAVEPOINTS | +--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+ | CSV | YES | Stores tables as CSV files | NO | NO | NO | | MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO | | MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO | | SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES | | InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | +--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+ 8 rows in set (0,010 sec)
Criando Tabela e Especificando qual Engine Usaremos
Ao criar uma nova tabela, você precisa especificar um mecanismo de armazenamento(storage engine). Caso contrário, será usado um mecanismo de armazenamento padrão para a tabela.
O MariaDB tornou o InnoDB o mecanismo de armazenamento padrão desde a versão 5.5. Na versão anterior, ele usava o Aria como o mecanismo de armazenamento padrão.
A sintaxe, ao se criar uma tabela, para definirmos qual será a engine é:
create table nome_tabela( ... )engine=nome_da_engine;
Storage Engine InnoDB
O InnoDB é um mecanismo de armazenamento para uso geral e de alto desempenho que oferece suporte a transações com savepoints(pontos de salvamento), transações XA e chaves estrangeiras(foreign keys). Savepoints são pontos, para restauração quando necessário, no meio de uma transação. XA é um tipo especial de transação projetado para transações que podem envolver vários recursos, não apenas bancos de dados SQL.
Na maioria dos casos, o desempenho do InnoDB é melhor do que outros mecanismos, portanto, é um mecanismo de armazenamento padrão.
Storage Engine TokuDB
Semelhante ao InnoDB, o TokuDB suporta transações com savepoints e transações XA. No entanto, ele não oferece suporte a chaves estrangeiras e índices de texto completo.
Ao contrário do InnoDB, o TokuDB suporta uma estrutura especial para índices chamados de árvores factuais. Além disso, outro recurso importante do TokuDB é a compactação de dados.
As árvores fractais e a compactação de dados tornam o TokuDB adequado para conjuntos de dados muito grandes para serem armazenados inteiramente na memória.
Storage Engine MyISAM
MyISAM era o mecanismo de armazenamento padrão para MySQL e MariaDB antes da versão 5.5. MyISAM é um mecanismo de armazenamento simples que é otimizado para operações pesadas de leitura e não de gravação. MyISAM é bom para sites e sistemas de relatórios que requerem cargas de trabalho de leitura pesada.
Storage Engine Aria
MyISAM foi substituído pelo Aria. Aria usa logs que permitem a recuperação de dados após travamentos. Aria é melhor que MyISAM em ambientes que possuem simultaneidade de tarefas.
MyISAM e Aria não suportam transações e chaves estrangeiras. Cada instrução no Aria é considerada uma transação.
Storage Engine MyRocks
O mecanismo de armazenamento MyRocks é baseado no RocksDB, que foi originalmente desenvolvido pelo Facebook. O mecanismo de armazenamento MyRocks é bom para cargas de trabalho que exigem alta compactação e eficiência de E/S.
O mecanismo de armazenamento MyRocks usa uma arquitetura Log Structured Merge (LSM) que tem melhor compactação do que a árvore B usada pelo InnoDB. É otimizado para gravação e tem carregamento e replicação de dados mais rápidos.
O mecanismo de armazenamento MyRocks oferece suporte a níveis isolados de leitura confirmados e repetíveis. No entanto, ele não suporta serializable(serializável).
Comment on “MariaDB e MySQL: Conhecendo sobre Storage Engines;”