MySQL - emitindo atualizações de baixa prioridade

2

Existe uma maneira de executar atualizações de baixa prioridade no mysql?

Estou executando um aplicativo de carga muito alto, onde pode haver milhares de usuários tentando atualizar simultaneamente os mesmos registros de dados. Isso é principalmente informações estatísticas baseadas em sessão, muitas das quais podem ser ignoradas caso haja um tempo de espera associado à solicitação. Gostaria de poder verificar se alguma tabela / linha está bloqueada e, em caso afirmativo, apenas não passa uma consulta de atualização para o servidor. Isso é possível?

    
por clops 20.01.2010 / 11:52

1 resposta

2

Qual mecanismo de banco de dados você está usando? MyISAM ou InnoDB? Se for MyISAM, você pode usar o seguinte comando para ver os bloqueios:

SHOW FULL PROCESSLIST;

Fonte: Como posso mostrar os bloqueios do mysql?

No entanto, recomendo que você adote uma abordagem diferente. Em vez de ter um único ponto de contenção, basta inserir uma nova linha para cada ponto de dados com INSERT DELAYED. Então, no final do dia, ou sempre que você precisar dos dados, você pode processar tudo em lote. Observe que isso funciona apenas para os tipos de mecanismo MyISAM, MEMORY e ARCHIVE.

Fonte: dev.mysql.com/doc/refman/5.1/en/insert-delayed.html

Acho que esta questão pertence ao Stack Overflow. Você provavelmente terá uma resposta melhor lá.

-Geoffrey Lee

    
por 20.01.2010 / 12:33

Tags