Arquitetura MySQL InnoDB

Resumo : neste tutorial, você aprenderá sobre a arquitetura MySQL InnoDB, incluindo suas estruturas na memória e no disco.

InnoDB é um mecanismo de armazenamento padrão para MySQL, projetado com foco em confiabilidade e desempenho.

A imagem a seguir ilustra a arquitetura InnoDB do MySQL 8.0:

A arquitetura InnoDB possui dois tipos principais de estruturas:

  • Estruturas na memória
  • estruturas em disco

Estruturas na memória

As estruturas in-memory são responsáveis ​​por gerenciar e otimizar o armazenamento e recuperação de dados. As estruturas na memória incluem:

  • Conjunto de buffers
  • Alterar buffer
  • Índice de hash adaptativo
  • Buffer de registro

Conjunto de buffers

O buffer pool armazena em cache dados acessados ​​com frequência. O buffer pool permite que o MySQL leia e grave dados diretamente na memória, reduzindo acessos de E/S caros e melhorando significativamente o desempenho da consulta.

O MySQL permite que você configure o tamanho do buffer pool alocando uma parte da memória do sistema para armazenamento em cache. Se você tiver um servidor MySQL dedicado, poderá alocar até 80% da memória física ao buffer pool para obter desempenho ideal.

Para otimizar o desempenho do servidor MySQL, você pode ajustar o tamanho do buffer pool , o número de instâncias do buffer pool e o tamanho do bloco do buffer pool .

Alterar buffer

O buffer de alteração é responsável por armazenar em cache as alterações nas páginas de índice secundárias quando essas páginas não estão no buffer pool.

Quando você executa uma instrução INSERT , UPDATE ou DELETE , ela altera os dados da tabela e as páginas de índice secundárias. O buffer de alterações armazena essas alterações em cache quando as páginas relevantes não estão no buffer pool para evitar operações de E/S demoradas.

Índice de hash adaptativo

O índice adaptativo é uma estrutura na memória para otimizar o desempenho de determinadas opções de leitura. Ele foi projetado para acelerar o acesso a páginas de índice consultadas com frequência, fornecendo um mecanismo rápido de pesquisa na memória.

Buffer de registro

O buffer de log é uma área de memória que contém as alterações a serem gravadas nos logs de transações.

O buffer de log melhora o desempenho gravando logs na memória antes de liberá-los periodicamente para o redo log no disco.

O tamanho padrão do buffer de log geralmente é suficiente para a maioria dos aplicativos. Mas se você tiver um aplicativo com uso intensivo de gravação, poderá configurar o tamanho do buffer de log para melhorar o desempenho do servidor MySQL.

Estruturas em disco

O mecanismo de armazenamento InnoDB usa estruturas em disco para armazenar dados permanentemente em discos. Essas estruturas garantem a integridade dos dados, oferecem armazenamento eficiente e suportam recursos transacionais.

As estruturas em disco incluem:

  • Espaço de tabela do sistema
  • Tablespaces de arquivo por tabela
  • Espaços de tabela gerais
  • Desfazer espaços de tabela
  • Espaços de tabela temporários
  • Buffer de gravação dupla
  • Refazer registro
  • Desfazer registros

Espaço de tabela do sistema

O tablespace do sistema serve como área de armazenamento para o buffer de alterações.

O InnoDB usa um ou mais arquivos de dados para o tablespace do sistema. Por padrão, o MySQL cria o ibdata1arquivo no diretório de dados .

A innodb_data_file_pathopção de inicialização determina o tamanho e o número de arquivos de dados do espaço de tabela do sistema.

Tablespaces de arquivo por tabela

Os espaços de tabela arquivo por tabela armazenam os dados reais das tabelas InnoDB.

Quando você cria novas tabelas usando o mecanismo de armazenamento InnoDB, o InnoDB armazena cada tabela e seus índices associados em um arquivo por espaço de tabela com a .ibdextensão.

Por exemplo, se você criar uma tabela chamada tbl_name, o InnoDB criará um arquivo de dados correspondente por espaço de tabela, como tbl_name.idbno diretório de dados.

Espaços de tabela gerais

Tablespaces gerais são tablespaces compartilhados que podem armazenar diversas tabelas. Os espaços de tabela gerais são criados usando a CREATE TABLESPACEinstrução.

Os tablespaces gerais ajudam a reduzir a duplicação de metadados de tablespace na memória quando diversas tabelas compartilham o mesmo tablespace geral. Portanto, os espaços de tabela gerais têm vantagens potenciais de memória em comparação com os espaços de tabela de arquivo por tabela.

Desfazer espaços de tabela

O tablespace de undo armazena logs de undo que contêm as informações para desfazer as alterações mais recentes de uma transação.

O MySQL possui dois arquivos de espaço de tabela de desfazer padrão innodb_undo_001  e innodb_undo_002.

Espaços de tabela temporários

Quando você cria tabelas temporárias, o InnoDB as armazena nos espaços de tabelas temporários, mais especificamente nos espaços de tabelas temporários de sessão.

Se você fizer alterações nas tabelas temporárias, o InnoDB armazenará segmentos de rollback para alterações no espaço de tabela temporário global.

Buffer de gravação dupla

O InnoDB usa o Doublewrite Buffer para armazenar páginas que foram liberadas do buffer pool antes de serem gravadas nos arquivos de dados do InnoDB.

O Doublewrite Buffer permite que o InnoDB recupere uma cópia confiável da página para recuperação caso ocorra um problema de armazenamento.

Refazer registro

Um redo log é uma estrutura de dados baseada em disco que armazena as alterações feitas nas tabelas. O InnoDB usa o redo log durante a recuperação de falhas para corrigir os dados gravados por transações incompletas.

Por exemplo, quando você executa uma instrução SQL que altera o banco de dados, como INSERT , UPDATE e DELETE , o redo log armazena as solicitações em um arquivo de redo log.

Se ocorrer uma falha, o MySQL reproduz a modificação no redo log que não foi concluída antes de aceitar a conexão.

O InnoDB usa um conjunto de arquivos de redo log ( ib_logfile0, iblogfile1,…) para armazenar as alterações nos dados da tabela.

Desfazer registros

Os logs de desfazer armazenam as informações necessárias para operações de reversão.

Por exemplo, se você executar uma transação e decidir revertê-la, o InnoDB utilizará o log de desfazer para reverter as alterações feitas durante essa transação.

O InnoDB usa um conjunto de arquivos de log de desfazer, geralmente chamados de undo_001.ibd, udo_002.ibde assim por diante, para armazenar os logs.

Resumo

  • A arquitetura InnoDB inclui estruturas na memória e no disco.
  • O InnoDB usa um buffer pool para armazenar em cache os dados acessados ​​com frequência, melhorando assim o desempenho, permitindo acesso direto aos dados na memória e reduzindo as operações de E/S do disco.
  • O InnoDB usa estruturas em disco, como buffers de gravação dupla, logs de desfazer e logs de redo para manter a integridade dos dados e facilitar a recuperação, garantindo a consistência do banco de dados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *