INSERT DELAYED em tabelas bloqueadas bloqueia processos PHP para continuar

2

Nossos servidores web escrevem algumas informações de rastreamento em um banco de dados MySQL (usando INSERT DELAYED na tabela MyISAM). Quando uma grande consulta SELECT é executada nesta tabela ou quando está bloqueada por outro motivo, o servidor Web processa (com INSERT DELAYED) aguardando o banco de dados e, em alguns casos, o limite MaxServer é atingido no Apaches, portanto eles deixarão de atender solicitações .

Usamos INSERT DELAYED porque

The DELAYED option for the INSERT statement is a MySQL extension to standard SQL that is very useful if you have clients that cannot or need not wait for the INSERT to complete. This is a common situation when you use MySQL for logging and you also periodically run SELECT and UPDATE statements that take a long time to complete.

Cite a documentação do MySQL .

Estou me perguntando por que os processos do Apache estão aguardando a conclusão do INSERT DELAYED. E o que posso fazer para apenas enviar os dados e esquecê-los. (Como isso é o registro de dados, não me importo se perdermos algumas entradas.) Mesmo quando a tabela está bloqueada, o script PHP deve simplesmente continuar e não deve esperar por uma resposta do MySQL.

(Não queremos configurar o mestre-escravo para esta tabela, mas estamos pensando em mover esses dados para algum banco de dados NoSQL. Mas, por enquanto, gostaria de saber por que o INSERT DELAYED não está funcionando como esperado.)

    
por sw0x2A 03.01.2011 / 19:43

1 resposta

1

Parece-me que você está fazendo a coisa certa para conseguir o que quer, e o que você descreve é o modo como deve funcionar. Pensamentos:

  • Verifique sua contagem de threads do MySQL - o MySQL está ficando sem threads e, portanto, bloqueando os processos PHP / Apache?
  • Você está usando mysql_pconnect () em PHP? Não tenho certeza de como a conexão persistente é tratada, mas se ela for bloqueada pela seleção longa de alguma forma, isso pode estar interferindo nas inserções.
por 03.01.2011 / 21:11

Tags