Stand-alone mecanismo de armazenamento para as reflexões mysql

Última artigo vamos introduzir mecanismo de armazenamento do MySQL e assim provocar a estrutura física de um índice de
pensamento
, mas transações concorrentes e mecanismo de bloqueio é assim, vamos explorar

Como uma instrução SQL é executada

•连接器: Autenticação e permissões relacionadas (MySQL tempo de login).
•查询缓存: Tempo para executar uma consulta, ele irá verificar primeiro o cache.
•分析器: Não há hit cache, em seguida, ele vai passar pelo analisador de instrução SQL, analisador que significa olhar para a sua instrução SQL para estar fazendo, em seguida, verificar a sua sintaxe da instrução SQL está correta.
•优化器: De acordo com o MySQL acredita que a melhor solução para fazê-lo.
•执行器: Executar uma declaração, em seguida, retorna os dados a partir do motor de armazenamento.

problema de simultaneidade transação?

MySQL ativado por padrão auto-commit a cada executar uma instrução SQL compromete automaticamente a transação. No MySQL transação deve primeiro desligar o envio automático, use a submissão manual de atômicas executar várias instruções SQL. Quando mais transações, problemas de concorrência irá emergir.

Bloqueio e MVCC

Bloquear divididos em bloqueios exclusivos e compartilhados bloqueios, especificamente, bloqueios de escrita e bloqueios de leitura (bloqueio no modo de ação, compartilhada bloqueios de leitura, não gravável)
versões mais antigas do motor MySQL MyISAM suporta apenas o uso de bloqueio de tabela, não importa o que uma operação de rosca dados que nunca este bloqueio de tabela, outros segmentos só pode operar sem qualquer influência sobre a linha não pode ser realizada ao mesmo tempo, somente esperando para adquirir o bloqueio. A nova versão do motor é reduzida InnoDB granularidade do bloqueio, as linhas de suporte de bloqueio, as linhas de dados que utilizam o bloqueio dar a linha correspondente, contanto que a operação independente dos outros segmentos podem operar em simultâneo com a linha de fecho, o aumento da eficiência concomitante .
há InnoDB意向锁,索引行锁,间隙锁

bloqueio explicação
intenção fechaduras Quando um bloqueio à declaração antecipada de vontade, e a intenção de adquirir um bloqueio no nível de tabela, se a aquisição for bem sucedida, será mais tarde ou é (são permitidos), trancado algumas das linhas da tabela.
Índice de bloqueio de linha Exemplos: executar uma instrução SQL SELECT SID table_student que SID = 123; se existir índice sid (InnoDB cria automaticamente um índice agrupado com base na chave mestra), então o índice dos correspondentes impede a linha de bloqueio a recuperação de outros fios na fileira ser modificado. Se o campo não está indexado, ele irá bloquear a tabela inteira.
gap de bloqueio O padrão é usar MySQL sob REPETABLE LEIA nível de isolamento padrão das coisas, o nível de isolamento irá ocorrer como um fantasma ler problema. Assim, a fim de evitar leitura fantasma problema InnoDB com a abertura de bloqueio (fechaduras Gap). Para o intervalo de campo lacuna folga de bloqueio termos procurados trinco que uma gama de dados de consulta, impedindo linhas a tracejado de inserção.

-Chave seguinte é um fecho de combinação e os bloqueios de linha índice de profundidade, principalmente para evitar a leitura fantasma
1), se a condição de actualização não está a tomar o índice, este tempo será uma verificação completa da tabela, quando a tabela de verificação, para evitar que qualquer um dos outros operação de actualização, subiu para um bloqueio de tabela.
2), se o campo condições atualização do índice, mas não o único índice (incluindo índice de chave primária), então o tempo será atualizado usando a trava de chave seguinte. A razão para usar trava de chave seguinte de:
A), é preciso primeiro garantir mais um bloqueio exclusivo sobre os registros de cumprir os critérios, irá bloquear o valor do índice não-exclusivo atual e o índice de chave primária correspondente;
b), mas também para garantir o intervalo de bloqueio não pode ser inserido os novos dados.
3) Se as condições para uma atualização de índice exclusivo, utilize o bloqueio de registro (bloqueio de gravação).
Notamos que o bloqueio acima do normal select.....é inválido, pertencem a um instantâneo de ler isto, eu vou explicar mais tarde. nível de isolamento RR isso select...from...lock in share modepode aumentar a diferença para evitar leituras fantasmas.
desempenho mágico Leitura: uma transação (com vista lido) antes e depois das duas consultas na mesma faixa quando, depois de uma consulta para ver a consulta anterior não ver a linha.
Para leitura fantasma duas ressalvas:
1, o nível de isolamento de leitura repetida, a consulta comum é uma leitura instantâneo, não verá outra insere dados de transação, Magic leitura só aparecem na leitura atual.
2, leitura fantasma refere-se especificamente à linha recentemente introduzida, ler os resultados da actualização original não existir linha. Porque a leitura atual é o papel pode ler tudo foram apresentados os valores mais recentes gravados.

Claro que há uma solução mágica para ler, é MVCC (MVCC multi-versão controle de concorrência), sob a sub-leitura nível de isolamento transação RR vai economizar Ver Read (snapshots) , primeira forma de leitura Leia View, o segundo vai seguir esta Leia View. E cada vez que uma nova forma de RC Lido Ver em condições de isolamento.

Leia o acima da próxima chave de bloqueio todo mundo tem um gosto de talento, mas vai ter que esperar por um bloqueio. MVCC adicionados a cada um dos dois lista implícita, em que uma linha de memória modificado é "tempo", para excluir outras lojas coluna "tempo"
o nível de isolamento RR
Select
versão modificada a) é menor ou igual à transação número da linha.
excluir o b) linha número da versão ou não definido, ou maior do que o número da versão da transação.
Insert、Update、Delete
São usados para atualizar o número da versão, não entrar aqui.

Nós pensamos sobre a linha do número de revisão é menor ou igual ao número de transação e eliminar o número da versão da linha ou não estão definidos, ou maior do que o número da versão da transação não estiver muito bem evitar o fantasma lê.

Solução de problemas

Então, o nosso mysql como reverter a transação, e como restaurar dados quando ele é baixo, bem como a replicação mestre-escravo é como conseguir, vamos dizer que através do log, que registrar cada específico que corresponde.

Lançado sete artigos originais · ganhou elogios 45 · vista 8511

Acho que você gosta

Origin blog.csdn.net/xk4848123/article/details/105195921
Recomendado
Clasificación