Uma imagem para obter a arquitetura MySQL

Para entender o mecanismo operacional do mysql, você deve primeiro ter um certo conhecimento da arquitetura do mysql.

Recentemente, por causa de algumas coisas, tenho levado um duro golpe, sinto que por mais que eu tente, minha carreira será assim. Então, de repente, perdi minha paixão original por pesquisar tecnologia e fazer blogs.

Mas de qualquer maneira, o caminho é escolhido por mim mesmo, e eu tenho que terminar quando choro. Além disso, parece não haver outra maneira.

arquitetura mysql

Insira a descrição da imagem aqui

Pela figura, pode-se ver que o MySQL consiste nas seguintes partes:

  • Componente de pool de conexão
  • Serviços de gerenciamento e componentes de ferramentas
  • Componentes de interface SQL
  • Componente Query Analyzer
  • Componente otimizador
  • Componente de cache
  • Mecanismo de armazenamento de plug-in
  • Arquivo físico

Nota: Um
dos recursos mais importantes que distinguem o banco de dados MySql de outros bancos de dados é seu mecanismo de armazenamento de tabela de plug-in .
Observação: o
mecanismo de armazenamento é baseado em tabela, não em banco de dados.

Com base neste recurso, a maioria dos bancos de dados de negócios no projeto precisa suportar atributos de transação, portanto, o mecanismo de armazenamento InnoDB é usado. Mas para aquelas tabelas com características somente leitura, podemos considerar o uso do mecanismo de armazenamento MyISAM, de forma que ele não destrua as características de transação do banco de dados.

Descrição detalhada

A camada superior é o componente de conexão. O servidor a seguir é composto de pool de conexão, ferramentas e serviços de gerenciamento, interface SQL, analisador, otimizador, cache, mecanismo de armazenamento e sistema de arquivos.

Pool de conexão : Como leva muito tempo para estabelecer a cada vez, a função do pool de conexão é armazenar em cache essas conexões e você pode usar diretamente as conexões estabelecidas na próxima vez para melhorar o desempenho do servidor.
Ferramentas e serviços de gerenciamento: gerenciamento de sistemas e ferramentas de controle, como backup e recuperação, replicação Mysql, clusters, etc.
Interface SQL : aceita os comandos SQL do usuário e retorna os resultados que os usuários precisam consultar. Por exemplo, selecionar de é chamar o
analisador de consulta da Interface SQL : quando o comando SQL é passado para o analisador, ele será verificado e analisado pelo analisador (permissões, estrutura gramatical). As
funções principais:
a. Decompor a instrução SQL em uma estrutura de dados e passar essa estrutura Nas etapas subsequentes, a transmissão e o processamento subsequentes de instruções SQL são baseados nesta estrutura.
B. Se forem encontrados erros na composição de decomposição, isso significa que a instrução SQL é um
otimizador de consulta irracional : otimizador de consulta, instrução SQL antes da consulta Usará o otimizador de consulta para otimizar a consulta. Ele usa a estratégia ** "select-projection-join" ** para consultar.
Pode ser entendido com um exemplo: selecionar uid, nome do usuário onde gênero = 1;
Esta consulta de seleção primeiro seleciona com base na instrução where, em vez de primeiro consultar todas as tabelas e, em seguida, realizar a filtragem de gênero.
Esta consulta de seleção é baseada em uid e nome. A projeção de atributos, em vez de filtrar todos os atributos posteriormente,
junte essas duas condições de consulta para gerar o resultado final da consulta.

Além disso, o otimizador de consulta também pode controlar a qual índice uma instrução SQL consulta e ajustar automaticamente a ordem das condições onde na instrução SQL para atender às regras do princípio de correspondência mais à esquerda do índice composto.

Cache : Cache de consulta ( removido após a versão MySQL 8.0 ) .Se o cache de consulta tem um resultado de consulta correspondente, a instrução de consulta pode ir diretamente para o cache de consulta para buscar dados.
A extremidade fria dos dados transborda através do algoritmo LRU e as páginas de dados que devem ser atualizadas para o disco a tempo no futuro são chamadas de páginas sujas.
Esse mecanismo de cache é composto por uma série de pequenos caches. Como cache de tabela, cache de registro, cache de chave, cache de permissão, etc.

Não é recomendado usar cache para consultas do MySQL, porque a invalidação do cache de consulta pode ser muito frequente em cenários de negócios reais. Se você atualizar uma tabela, todos os caches de consulta nesta tabela serão limpos.
Portanto, geralmente não recomendamos o uso de cache de consulta na maioria dos casos.
Após a versão do MySQL 8.0, a função de cache foi excluída. O oficial acredita que esta função é menor em cenários reais de aplicativos, então ela é simplesmente excluída.

Mecanismo de armazenamento de plug-in : O mecanismo de armazenamento é uma forma de gerenciar dados operacionais (armazenar dados, como atualizar, consultar dados, etc.). Como o armazenamento de dados em um banco de dados relacional é armazenado na forma de uma tabela, o mecanismo de armazenamento também pode ser chamado de tipo de tabela (ou seja, o tipo de armazenamento e operação dessa tabela)

Arquivos
físicos : os arquivos físicos incluem: arquivos de log, arquivos de dados, arquivos de configuração, arquivos pid, arquivos de soquete, etc.

O fluxo de execução de uma instrução de consulta

Tendo dito tudo acima, como uma instrução sql é executada? Na verdade, nosso sql pode ser dividido em dois tipos, um é consulta e o outro é atualização (adicionar, atualizar, excluir). Primeiro, analisamos a instrução da consulta, a instrução é a seguinte:

select * from tb_student  A where A.age='18' and A.name=' 张三 ';

Combinado com a descrição acima, analisamos o fluxo de execução desta instrução:
1. Estabeleça uma conexão
2. Chame a interface sql
3. Autenticação: primeiro verifique se a instrução tem permissão, se não houver permissão, retorne uma mensagem de erro diretamente
4. Julgamento do cache: se Se você tiver permissão, antes do MySQL8.0, o cache será consultado primeiro. Use esta instrução SQL como a chave para consultar se há um resultado na memória. Se houver um cache direto, se não, vá para a próxima etapa.
5. Analise a instrução sql:
execute a análise lexical por meio do analisador para extrair os elementos-chave da instrução sql. Por exemplo, a instrução acima é para consultar a seleção, e a tabela a ser consultada é chamada tb_student e todas as colunas precisam ser consultadas. A condição de consulta é para esta tabela id = '1'. Em seguida, avalie se há erros gramaticais na instrução sql, como se as palavras-chave estão corretas etc., se a verificação não for problema, prossiga para a próxima etapa.
6. Otimização da consulta Execute sql na instrução sql.
Em seguida, é o otimizador para determinar o plano de execução. A instrução sql acima pode ter dois planos de execução:
a. Primeiro consulte o aluno chamado "Zhang San" na tabela de alunos e, em seguida, determine se A idade é 18 anos.
b. Primeiro encontre o aluno de 18 anos entre os alunos e, em seguida, procure o aluno chamado "Zhang San".
Em seguida, o otimizador seleciona a solução mais eficiente com base em seu próprio algoritmo de otimização (o otimizador acredita que às vezes pode não ser a melhor). Depois de confirmar o plano de execução, está pronto para iniciar a execução.

7. Execute a consulta e retorne o resultado

Descrição física do arquivo

1. Log de
Insira a descrição da imagem aqui
erro de arquivo de log Resolução de problemas de log de erros /var/log/mysqld.log [habilitado por padrão]
log bin log backup incremental DDL DML DCL
Relay log Relay log replicação recepção replicação mestre
log lento consulta lenta consulta de ajuste O tempo excede o valor especificado

A localização padrão do arquivo de log:
Log de erro
log-error = / var / log / mysqld.log
Log binário
log-bin = / var / log / mysql-bin / bin.log
server-id = 2
Consulta lenta após a versão 5.7.x Log
slow_query_log = 1 | 0
slow_query_log_file = / var / log / mysql-slow / slow.log
long_query_time = 3

2. Se o arquivo de configuração
/etc/my.cnf -> / etc / mysql / my.cnf -> / usr / etc / my.cnf—> ~ / .my.cnf estiver em
conflito, o último lido deve prevalecer
[ O grupo mysqld] inclui os parâmetros de inicialização quando o serviço mysqld é iniciado. O
grupo [cliente] contém os parâmetros que podem ser lidos pelo programa da ferramenta cliente, além de outros grupos de parâmetros específicos para cada software cliente, etc.

3. Arquivo de dados
1.
Não importa o mecanismo de armazenamento do arquivo .frm , cada tabela terá um arquivo .frm nomeado após o nome da tabela, e as informações de metadados (meta) relacionadas à tabela são armazenadas neste arquivo, incluindo a estrutura da tabela Informações de definição, etc.
2. O arquivo .MYD é
dedicado ao mecanismo de armazenamento myisam e armazena os dados da tabela myisam. Cada tabela myisam terá um arquivo .MYD correspondente a ela, que também é armazenado no diretório de seu próprio banco de dados
3. O arquivo .MYI
também é dedicado ao mecanismo de armazenamento myisam e armazena as informações relacionadas ao índice da tabela myisam. Para o mecanismo de armazenamento myisam, o conteúdo que pode ser armazenado em cache é derivado principalmente do arquivo .MYI.
Cada tabela myisam corresponde a um arquivo .MYI e seu local de armazenamento é o mesmo que os
arquivos .frm e
.MYD4 .ibd e os arquivos ibdata armazenam arquivos de dados innoDB (incluindo índices). O mecanismo de armazenamento innoDB possui dois métodos de espaço de tabela: espaço de tabela exclusivo e espaço de tabela compartilhado.
Espaço de tabela exclusivo: Use arquivos .ibd para armazenar dados e cada tabela possui um arquivo .ibd, que é armazenado no mesmo local que os dados myisam.
Espaço de tabela compartilhado: Use arquivos .ibdata e todas as tabelas compartilham um (ou mais, autoconfigurados) arquivos ibdata.

ibdata1: espaço de tabela do sistema (arquivo de dados) desfazer segmento
ib_logfile0 grupo de arquivos redlog
ib_logfile1

Arquivo db.opt Este arquivo estará presente em todas as bibliotecas auto-construídas e registra o conjunto de caracteres padrão e as regras de verificação dessa biblioteca.

4. O arquivo pid O arquivo
pid é um arquivo de processo do aplicativo mysqld no ambiente Unix / Linux.Como muitos outros programas de servidor Unix / Linux, ele armazena seu próprio id de processo.

5. Arquivo Socket O arquivo
Socket está disponível apenas no ambiente Unix / Linux.No ambiente Unix / Linux, os usuários podem usar diretamente o Unix Socket para se conectar ao mysql em vez da rede TCP / IP.

Distinguir banco de dados, instância de banco de dados, servidor de banco de dados

Banco de dados:
uma coleção de arquivos de dados no sistema operacional ou armazenamento. No banco de dados mysql, os arquivos do banco de dados podem ser arquivos terminados em * .frm, .MYD, .MYI, * .ibd, etc. Os tipos de arquivo são diferentes para diferentes mecanismos de armazenamento.
Mais voltado para o armazenamento de arquivos.
A instância do banco de dados (instância)
consiste em processos ou threads em segundo plano e uma área de memória compartilhada. A memória compartilhada pode ser compartilhada executando threads em segundo plano.
É preciso prestar atenção: a instância do banco de dados é o banco de dados de operação real.
Mais inclinado para as operações do aplicativo.

O relacionamento entre o banco de dados e a instância de banco de dados:
geralmente, há uma correspondência um a um entre uma instância de banco de dados e um banco de dados, ou seja, uma instância de banco de dados corresponde a um banco de dados;
no entanto, existem várias instâncias de banco de dados em um ambiente de cluster que compartilham um banco de dados.
Por exemplo, uma tabela em um banco de dados pode ser distribuída em várias instâncias de banco de dados após uma estratégia de divisão de tabela.

A instância do banco de dados se refere ao aplicativo de banco de dados e o banco de dados se refere ao banco de dados criado na instância do banco de dados.
Por exemplo, se um aplicativo mysql da porta 3306 é implantado no servidor, então é uma instância de banco de dados;
se você continuar a implantar um aplicativo mysql de 3309, então duas instâncias do msql são implantadas em um serviço.
Na instância do mysql na porta 3306, criar um banco de dados denominado order significa criar um banco de dados.

O servidor de banco de dados (servidor de banco de dados)
implementa o servidor onde a instância do banco de dados está instalada.

Resumindo

1. A arquitetura mysql inclui principalmente componentes de pool de conexão, serviços de gerenciamento e componentes de ferramenta componentes de
interface SQL, componentes de analisador de consulta, componentes de otimizador, componentes de cache, mecanismos de armazenamento de plug-in e
arquivos físicos.
2. Analise o processo de execução de uma instrução de consulta: estabeleça uma conexão— "verificação de autoridade—" cache de consulta— "analisador—" otimizador— "verificação de permissão—" executor— "mecanismo
3. Distinguir entre bancos de dados, instâncias de banco de dados e bancos de dados servidor

[Momento feliz]
Insira a descrição da imagem aqui

Mais emocionante, siga-me.
Legenda: Siga o velho para aprender java

Acho que você gosta

Origin blog.csdn.net/w1014074794/article/details/107142463
Recomendado
Clasificación