Eu enfrentei alguns problemas reais em relação à execução de alguns procedimentos armazenados usando o servidor Mysql. Às vezes, um dos meus procedimentos não é executado (ou talvez seja interrompido) durante uma chamada externa (do aplicativo), então estou pensando:
- É possível que o Mysql pare automaticamente e mate o processo?
- se for verdade, quais são os indicadores e fatores que fazem o Mysql escolher sua vítima?
- Existe uma alternativa para configurar uma lista de prioridade de execução de consultas?
Obrigado.
O MySQL pode matar uma conexão se exceder
wait_timeout
. (Cuidado, existem várias configurações de tempo limite de espera.)O InnoDB pode eliminar uma transação no caso de um "impasse". Uma das transações concorrentes é encerrada, as outras podem continuar.
O InnoDB pode matar uma consulta se estiver esperando muito tempo por um bloqueio. Consulte
innodb_lock_wait_timeout
, cujo padrão é 50 segundos.Um usuário pode "matar" um processo mysql por meio da ferramenta de linha de comando 'mysql' e seu
kill
comando.Não acho que haja nada de especial em Stored Procedures, Functions, Events, Triggers - eles são essencialmente coleções de consultas que, por sua vez, estão sujeitas aos comentários acima.
UDFs
contém código escrito por usuários e especialmente instalado. Estes podem fazer qualquer coisa desagradável que você gosta.Basicamente, não há "prioridades" que você possa controlar. É melhor deixar o MySQL decidir o que fazer e quando.
Você quer dizer outra coisa por "processo"?