Como em uma consulta SQL no MySql

visão geral da arquitetura 1,1 MySQL básica

  • Conectores: autenticação e permissões relacionadas (quando o login MySQL).
  • O cache de consultas: Quando executar uma consulta, ele irá verificar primeiro o cache (após a remoção do MySQL versão 8.0, porque esta função não é prático).
  • Analyzer: se não houver um acerto de cache, a instrução SQL será depois de analisadores, analisadores sem rodeios, é olhar para a sua instrução SQL para fazer, em seguida, verificar a sua sintaxe da instrução SQL está correta.
  • Optimizer: De acordo com MySQL acho que a melhor solução para fazê-lo.
  • Atuador: executar uma instrução, em seguida, retorna os dados a partir do motor de armazenamento.

 

 

Simplificando MySQL Server é dividido em camadas e a camada de mecanismo de armazenamento:

  • camada de servidor: incluindo conectores, cache de consultas, analisador, otimizador, atuadores, etc., em todo funções do motor de armazenamento são realizados nesta camada, como stored procedures, triggers, views, funções, etc., há uma comum módulo de log do módulo de log binglog.
  • Motor de armazenamento: a principal responsável pelo armazenamento e recuperação de dados, pode substituir o uso de plug-in arquitetura que suporta InnoDB, MyISAM, Memória e outro mecanismo de armazenamento, o motor InnoDB que tem seu próprio módulo redolog módulo de registro. Agora, o mecanismo de armazenamento mais utilizado InnoDB, ela será tratada como o motor de armazenamento padrão do MySQL 5.5.5 versão desde o início.

1.2 camada Servidor substancialmente Apresentando

1) O conector

O conector principal e autenticação, e os direitos funções relacionadas, como o mesmo nível de um guarda alta.

Ele é responsável pelo login do usuário do banco de dados, autenticação de usuário, incluindo a senha de operação de verificação de conta, permissões, etc. Se a senha da conta de usuário já passou, o conector vai para todas as permissões do usuário da consulta tabela de privilégios de direitos após a conexão no decisão lógica neste momento sempre dependerá da permissão para ler dados, ou seja, desde que a ligação de acompanhamento não é administrador de imediato muda as permissões do usuário, o usuário também é afetada.

2) Após o cache de consulta (MySQL 8,0 versão removido)

O cache de consulta principal usada para armazenar em cache instrução SELECT que executado e o resultado definir o comunicado.

Depois que a conexão é estabelecida, o tempo para executar uma consulta, vai primeiro cache de consulta, o MySQL irá verificar primeiro se este sql executado, consulta o cache na forma de Key-Value na memória, Key é esperado, o valor é o conjunto de resultados. Se a chave de cache é atingido, ele irá retornar diretamente para o cliente, se não bater, vai executar a operação de acompanhamento, após a conclusão dos resultados serão armazenados em cache, a próxima chamada conveniente. Claro, quando você realmente executar o cache de consultas ainda irá verificar a permissão do usuário, se houver consulta a tabela.

MySQL consulta cache não é recomendado, pois a invalidação da cache de consultas em cenários de negócios reais podem ser muito frequentes, se você atualizar uma tabela, então tudo isso vai estar no cache de consultas tabela é esvaziada. Para dados não atualizados com freqüência, o uso de memória cache ainda é possível.

Portanto, em geral, na maioria dos casos, não são recomendados para usar o cache de consultas.

Depois MySQL 8.0 versão removido a função de cache, o funcionário é considerado menos funcional em cenários de aplicação prática, por isso diretamente excluído.

3) Analyzer

MySQL não bateu no cache, ele vai entrar no analisador, o analisador é usado principalmente para analisar a instrução SQL está fazendo aqui, o analisador será dividido em etapas:

O primeiro passo, análise léxica, uma instrução SQL tem várias cordas, você deve primeiro extrair palavras-chave, tais como seleção, consulta consultas aumento, nomes de campos invocados proposta e assim por diante. E depois que a operação, eles vão entrar na segunda etapa.

A segunda etapa, de análise, juiz principalmente sql que você inseriu está correto, se a sintaxe MySQL.

Depois de concluir essas duas etapas, MySQL está pronto para começar, mas como executar, como realizar o melhor resultado? Desta vez temos de jogar o otimizador.

4) Optimizer

O papel do otimizador é que ele considera a execução adequada do programa a ser executado (e às vezes pode não ser o melhor, neste artigo envolve um conhecimento aprofundado desta parte da explicação), vários índices, tais como a forma de escolher a hora do índice, multi-mesa como escolher o tempo da consulta associada com a ordem e assim por diante.

Pode-se dizer, depois de um otimizador pode dizer que esta declaração tenha sido executada, especificamente, como para se estabelecer.

5) O actuador

Quando você seleciona a implementação do programa, MySQL está pronto para começar, e antes da primeira execução irá verificar se o usuário não tem direitos, se não tiver permissão, ele irá retornar uma mensagem de erro, se você tiver permissão, será chamar a interface do mecanismo, a interface retorna resultado da execução.

2.1 consulta

Dito tanto, então o que uma instrução SQL é como implementá-lo? Na verdade, nosso sql pode ser dividido em dois tipos, um é a consulta, um é de atualização (add, update, delete). Nós primeiro analisar a instrução de consulta seguinte, a instrução é a seguinte:

seleccionar * de tb_student Um onde A. idade = '18 ' e A. nome = '张三';

Em conjunto com a descrição acima, analisamos o fluxo de execução desta declaração:

  • Verificar se a declaração tem autoridade, se nenhuma autoridade, retorna diretamente uma mensagem de erro, se você tiver permissão, em MySQL8.0 versão anterior, terá de cache primeira consulta a esta chave resultados da consulta instrução SQL na memória se houver, se houver esconderijo direta, se não, o próximo passo.

  • análise lexical realizada pelo analisador, extraindo elementos-chave instrução SQL, tais como a extração de uma instrução de consulta acima selecionar, extrair tabelas precisa, chamado tb_student, necessidade de consultar todas as colunas, essa consulta é uma tabela ID = '1'. Em seguida, determinar se a instrução SQL tem um erro de sintaxe, como se as palavras-chave corretas, etc., se o cheque não é problema para a próxima etapa.

  • Depois, há o otimizador determinada implementação do programa, a instrução SQL acima, existem dois implementação do programa:

      a.先查询学生表中姓名为“张三”的学生,然后判断是否年龄是 18。
      b.先找出学生中年龄 18 岁的学生,然后再查询姓名为“张三”的学生。
    

    O otimizador para escolher a melhor eficiência de execução de um programa de acordo com seu próprio algoritmo de otimização (otimizador pensa, às vezes, não necessariamente o melhor). Então, depois de confirmar a execução do plano pronto para ser implementado.

  • Verificação de permissões, sem a permissão irá retornar uma mensagem de erro se houver privilégio é invocado interface do mecanismo de banco de dados, os resultados retornados motor.

declaração 2.2 atualização

Acima é um processo de execução de consulta SQL, e então o próximo vamos dar uma olhada em como uma instrução de atualização é executado-lo? instrução SQL é a seguinte:

update tb_student A set A.age='19' where A.name=' 张三 ';

Vamos mudar para Joe Smith na idade certamente não define a idade real do campo no banco de dados, ou para ser o diretor técnico da peça. Na verdade, a declaração também basicamente ir junto em um processo de investigação, mas será, certamente, o tempo para realizar o registro de atualização, este módulo será a introdução de um log, MySQL vem com um log binário modular log (log de arquivo), todos o mecanismo de armazenamento pode ser usado, foi utilizado motor InnoDB também vem com um log módulo de log refazer (redo log), temos que discutir padrão InnoDB para baixo o fluxo de execução desta declaração. Processo é como se segue:

  • Joe Smith a uma primeira verificação de dados, se houver um cache, o cache será usado também.
  • Em seguida, obter a instrução de consulta, a idade foi alterada para 19, em seguida, chamar a interface API do motor, esta linha de dados são escritos, dados do motor InnoDB armazenados na memória, log redo também gravou, log redo neste momento se prepara para entrar no estado, em seguida, informou o , execute completo, pronto para ser enviado.
  • Atuador depois de receber o registro de log binário de notificação, e em seguida, chamar a interface do motor, enviar log redo para a apresentação de Estado.
  • A atualização está completa.

III resume

  • MySQL Server é dividida em camadas e a camada de motor, camada inclui, essencialmente, um servidor de conector, o cache de consultas, o analisador, otimizador, executor, bem como um módulo de log (log binário), o módulo de log pode compartilhar tudo mecanismo de execução, redolog há apenas InnoDB.
  • camada motor é plug-in, incluindo agora, MyISAM, InnoDB, memória e assim por diante.
  • Consulta processo de execução é a seguinte: verificação de permissão (se um hit cache) --- "cache de consultas ---" --- analisador "otimizador ---" cheque Permissão --- "atuador ---" motor
  • Atualização processo de execução da instrução é a seguinte: Analisador ---- "---- verificação de permissões" atuador --- "Motor --- redo log (preparar estatuto ---" binlog --- "redo log (cometer estado )

Acho que você gosta

Origin www.cnblogs.com/bulrush/p/12534278.html
Recomendado
Clasificación