DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Artigo da SQL Magazine 28 - Otimização de consultas no MySQL – Parte 4

Artigo publicado na Revista SQL Magazine - Edição 28.

 

capaSQL28.JPG

 

Clique aqui para ler todos os artigos desta edição

 

Otimização de consultas no MySQL – Parte 4

Paul DuBois

Até agora focamos em como fazer consultas individuais mais rapidamente. O MySQL também permite afetar as prioridades de enfileiramento de declarações que podem fazer com que consultas que chegam de vários clientes cooperem melhor, de forma que clientes individuais não sejam bloqueados por muito tempo. Mudando as prioridades também podemos garantir que tipos particulares de consultas processem mais rapidamente.

Analisaremos a seguir a política de enfileiramento padrão do MySQL e as opções disponíveis para influenciar esta política. Também descreveremos o uso de inserções simultâneas e o efeito que os níveis de bloqueio do motor de armazenamento têm sobre o processamento concorrente entre clientes. Adotaremos a seguinte convenção: um cliente que executa uma recuperação (um SELECT) é um leitor e um cliente que executa uma operação que modifica uma tabela (DELETE, INSERT, REPLACE ou UPDATE) é um escritor.

O padrão da política de enfileiramento do MySQL pode ser resumido assim:

·         escritas têm prioridade mais alta que leituras;

·         escritas em uma tabela têm que acontecer uma de cada vez, e requisições de escrita são processados na ordem em que chegam;

·         leituras múltiplas de uma tabela podem ser processadas simultaneamente.

 

Os motores de armazenamento MyISAM e MEMORY implementam esta política de enfileiramento com a ajuda do bloqueio de tabelas. Sempre que um cliente acessa uma tabela, devemos antes obter um bloqueio para a mesma. Quando o cliente tiver acabado de processar a tabela, a mesma será desbloqueada. É possível obter e liberar bloqueios explicitamente emitindo declarações LOCK TABLES e UNLOCK TABLES, mas normalmente o gerenciador de bloqueios do servidor realiza automaticamente os bloqueios e os libera conforme necessário. O tipo de bloqueio requerido está relacionado ao tipo de operação que o cliente está realizando: escrita ou leitura.

Um cliente que executa uma escrita em uma tabela tem que ter um bloqueio para acesso exclusivo de tabela. A tabela estará em um estado inconsistente enquanto a operação estiver em progresso, pois o registro de dados está sendo apagado, adicionado ou alterado, e qualquer índice na tabela pode precisar ser atualizado para casar com a nova situação. Permitir a outros clientes o acesso à tabela quando a mesma está em processamento causaria problemas. Claramente, não é interessante permitir que dois clientes escrevam ao mesmo tempo numa tabela porque isto corromperia a mesma. Ao mesmo tempo, não é bom permitir que um cliente leia de uma tabela em processamento porque a tabela poderia estar mudando no local em que está sendo lida e os resultados seriam inexatos.

Um cliente que executa uma leitura de uma tabela tem que obter um bloqueio para impedir que outros clientes escrevam na mesma e a alterem durante a leitura. Porém, o bloqueio não precisa ser de acesso exclusivo. Ler não muda a tabela, portanto não há nenhuma razão para que um leitor deva impedir a um outro o acesso à tabela. Então, um bloqueio de leitura permite que outros clientes leiam a tabela ao mesmo tempo.

O MySQL provê vários modificadores de declaração que permitem influenciar a política de enfileiramento:

·         a palavra chave LOW_PRIORITY se aplica às declarações DELETE, INSERT, LOAD DATA, REPLACE e UPDATE;

·         a palavra chave HIGH_PRIORITY se aplica às declarações SELECT e INSERT;

·         "

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Equipe Devmedia
Noticias/Dicas/Artigos publicados.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03