Apparemment, un de mes collègues a tué un serveur web qui bloquait MySQL (en bloquant d'autres requêtes), plutôt que de tuer la requête spécifique, et il a pris grand soin d'oublier tous les détails de la requête qui bloquait le reste. J'aimerais pouvoir dire que c'est la première fois que cela se produit, mais c'est environ tous les 2 à 4 mois (intervalles irréguliers malheureusement, pas d'info là-dessus), et j'aimerais beaucoup pouvoir enregistrer les requêtes qui prennent beaucoup de temps, qu'elles soient terminées ou non.
Maintenant, pour les requêtes réussies, nous avons le journal des requêtes lentes qui fonctionne parfaitement, mais il ne se retrouve là qu'à la fin, et non pas s'il est tué pendant la requête. Existe-t-il une solution intégrée pour enregistrer les requêtes pendant qu'elles sont en cours d'exécution ? Pour l'instant, j'ai recours à l'exécution d'un daemon/script qui interroge le système toutes les 10 secondes :
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE TIME > 30
AND USER != 'replication'
AND USER != 'system user'
AND USER != 'DELAYED'
AND COMMAND != 'Sleep'
AND ID != CONNECTION_ID();
... mais ça fait un peu pirate, et je me demande s'il n'y a pas une possibilité intégrée que j'ai négligée ?