Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :Interrompre une requête

À mon humble avis, "interrompu" devrait être remplacé par "tué" ou "terminé". Le concept d'interruption peut prêter à confusion car on pourrait supposer qu'il permettrait de reprendre la requête plus tard.

Le standard SQL ne fournit pas de moyen d'interrompre ou de terminer une requête en cours d'exécution, mais tous les SGBD que je connais implémentent une commande KILL ou similaire. Par exemple, dans MySQL, un utilisateur peut utiliser SHOW [FULL] PROCESSLIST pour afficher toutes les requêtes en cours d'exécution (et leurs états, ID de requête, etc.). Les utilisateurs disposant du privilège KILL peuvent alors mettre fin à une requête.

La plupart des KILLs se produisent parce qu'une requête risque de s'exécuter trop longtemps ou bloque d'autres requêtes, par ex. il manque un index à la table ou le disque est plein. Lorsque vous ne vous souciez pas du résultat (par exemple, l'utilisateur a annulé la navigation sur le site), souvent le serveur Web lui-même interrompra le processus et donc la requête en elle-même (aucune intervention manuelle ou du programmeur nécessaire)