52 votes

Stop (long) cours d'exécution de la requête SQL dans PostgreSQL lors de la session ou des demandes n'existent plus?

Je ne suis pas sûr où commencer à répondre à cette question, mais si j'ai un AJAX web application qui envoie des requêtes au serveur et exécute long des requêtes sur la base de données (postgresql dans mon cas), est-il un moyen de les arrêter ou de tuer les requêtes si pendant l'exécution, l'utilisateur actualise la page ou de la fermeture de la session...etc?

86voto

Frank Heikens Points 29270

Pour arrêter la requête:

SELECT pg_cancel_backend(procpid);

Pour tuer la connexion de base de données:

SELECT pg_terminate_backend(procpid);

Pour obtenir une vue d'ensemble des transactions courantes, pour obtenir le procèdent id:

SELECT * FROM pg_stat_activity;

http://www.postgresql.org/docs/current/interactive/functions-admin.html

4voto

Tigra Points 1134

Compte tenu de votre psql configuré pour s'exécuter et se connecter à courant dev base de données présente un liner est très utile dans le développement lors de l'essai de requêtes compliquées qui peuvent hung, tue juste quelque points:

Si pas correctement configuré - ajouter les options d'utilisateur/mot de passe/base de données

psql -c "SELECT pid FROM pg_stat_activity;" -t | xargs -n1 -I {} psql -c "SELECT pg_cancel_backend({})"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X