Postgres Kill Query Pid

Postgres Kill Query Pid

En travaillant dans la base de données PostgreSQL, nous pouvons rencontrer des situations où certains processus sont interrompus ou pendus, et nous ne voulons plus d'eux. Chaque utilisateur de la base de données essaiera de supprimer ou de résilier ces connexions du système de base de données dans une telle situation. PostgreSQL a trouvé des instructions simples pour le faire. Il fournit la fonction pg_cancel_backed () et pg_terminate_backend () pour utiliser l'ID de processus pour une requête particulière pour l'annuler et la terminer avec la connexion qu'il détient en quelques secondes. Dans ce guide, nous discuterons de l'utilisation des deux fonctions dans nos requêtes de base de données pour tuer les requêtes.

Utilisation de l'interface graphique PostgreSQL PGADMIN:

Commençons par l'illustration simple de la mort d'une session d'une base de données postgresql en utilisant l'ID de processus dans la requête. Nous partirons de l'interface PGADMIN GUI de la base de données PostgreSQL. Ouvrez-le à l'aide de la barre de recherche de votre système Windows 10. Ajoutez le mot de passe pour votre serveur et votre base de données. Dans notre cas, la base de données est «aqsayasin». Vous devez ouvrir «l'outil de requête» de votre base de données à l'aide de l'icône de l'outil de requête maintenue en haut de la GUI de Pgadmin GUI.

Affichons toutes les séances ou processus de PostgreSQL sur la zone de requête. Pour cela, vous devez utiliser la requête sélectionnée avec le signe «*» avec le mot-clé «pg_stat_activité». Exécutez cette requête en utilisant le panneau «Triangle» à la barre de tâches de la requête PGADMIN. Tous les processus actuels seront affichés dans votre zone de sortie de données de pgadmin comme ci-dessous. Un total de 8 enregistrements ont été trouvés.

Turons un processus d'identification «908». Nous devons utiliser deux fonctions dans la requête sélectionnée sur la zone de requête pour tuer un processus. Le premier est la fonction pg_cancel_backend () et la deuxième est la fonction pg_terniate_backend (). La fonction pg_cancel_backend () est utilisée pour annuler simplement la requête d'une base de données en utilisant l'ID de processus pour une requête particulière. Il ne termine pas la connexion de la base de données. Tandis que la fonction pg_terminate_backend () annule la requête en utilisant l'ID de processus pour la requête et ferme la base de données connectée. Ainsi, nous utilisons les deux requêtes simultanément sur le même outil de requête pour tuer le processus ayant un identifiant «908». En exécution, nous avons la valeur booléenne «True» sous la colonne «pg_termine_background». Cela signifie que la requête et la connexion ont été interrompues avec succès.

Voyons si la requête sélectionnée de son identifiant de processus a été résiliée ou non. Pour cela, nous avons à nouveau utilisé la requête sélectionnée avec le mot-clé "PG_STAT_ACTIVITY". La grille de sortie montre que la requête «908» a disparu.

Soyons plus clairs en sélectionnant uniquement les requêtes ayant un état égal à «inactif». La même requête sera utilisée avec la clause WHERE pour mettre la condition de «state = 'inactif» ». En retour, nous n'avons que deux résultats pour les requêtes ayant un état «inactif». Turons le processus ID «7316».

Pour tuer la requête de l'ID de processus «7316», nous devons d'abord l'annuler en utilisant la même requête «Sélectionner» avec la fonction «pg_cancel_backend ()», en prenant l'ID de processus comme argument. Exécutez la requête affichée dans la zone de requête avec le bouton d'exécution maintenu dans la barre de tâches PGADMIN GUI. La sortie montre la valeur booléenne «True» sous la colonne «PG_CANCEL_BACKEND». Cela signifie que la requête d'un processus particulier a été annulée enfin.

Termons la requête avec la connexion de la base de données. Ainsi, l'instruction sélectionnée a été utilisée jusqu'à présent avec la fonction "pg_termine_backend ()". L'ID de processus a été mentionné dans l'argument de la fonction «pg_termine_backend ()». La sortie de ce programme affiche la «vraie» valeur booléenne sous la colonne «pg_terniate_backend». Cela signifie que la requête ayant un identifiant de processus «7316» s'est finalement terminée, et la connexion pour cette requête est terminée avec lui.

Voyons si nous pouvons trouver la requête juste annulée et terminée ayant un ID de processus 7316 sur la zone de sortie ou non. Nous avons donc utilisé la même requête de sélection avec le mot-clé "PG_STAT_ACTIVITY" et l'avons exécuté sur l'outil de requête de Postregsql Pgadmin. Il ne montre pas l'indice de requête / processus spécifiée dans la sortie, qui indique qu'il est déjà parti.

Utilisation de la console de shell postgresql:

Tout ce que nous avons fait est de tuer la requête avec sa connexion dans l'interface graphique Pgadmin de PostgreSQL. Nous pouvons également l'atteindre en utilisant le terminal de la coquille postgresql. Recherchez-le dans l'application Windows 10 à l'aide de la barre de recherche sur votre bureau. Écrivez «PSQL» et cliquez dessus lors de l'affichage. Il s'ouvrira comme un écran noir vous demandant d'ajouter le nom de l'hôte local que vous possédez. Ajouter cela et appuyez sur Entrée. Il demandera le nom de la base de données sur laquelle vous souhaitez travailler. Si ce n'est pas le cas, utilisez les «Postgres» par défaut. Nous utilisons jusqu'à présent la base de données «Aqsayasin» et numéro de port 5432. Nous avons ajouté le nom d'utilisateur et son mot de passe déjà créé dans notre base de données, i.e., aqsayasin. Si vous n'avez pas de création d'utilisateurs, optez pour le nom d'utilisateur «Postgres» par défaut. Une fois que toutes les informations d'identification ont été ajoutées, votre coquille postgresql est prête à être utilisée.

Avant de tuer une requête spécifique avec son identifiant de processus, nous devons voir les requêtes et sessions actuellement en activité, active, inactive et juste présentée de notre base de données "Aqsayasin". Par conséquent, nous utiliserons une commande «Sélectionner» dans le shell ainsi que les colonnes d'information que nous souhaitons afficher pour la requête spécifique via l'utilitaire PG_STAT_ACTIVITY de la base de données PostgreSQL.

Disons que vous souhaitez voir l'ID de processus d'une requête, le nom d'utilisateur par lequel cette requête a été exécutée, la base de données dans laquelle cette requête a été utilisée et l'état d'une requête. Nous avons indiqué tous les noms de colonne que nous voulons récupérer pour les requêtes. L'instruction sélectionnée a retourné 9 enregistrements. Nous avons un total de 1 requête active et 3 requêtes / activités inactives.

Essayons de retirer les requêtes ayant un «inactif» de l'État. Nous avons donc utilisé l'ID de processus «10892» pour y retirer la requête associée. Nous avons d'abord utilisé la méthode «pg_cancel_backend» pour l'annuler, puis la fonction «pg_terminate_backend ()» pour la terminer avec la connexion. Les deux requêtes renvoient «t» comme vrai pour l'annulation et la suppression.

Une fois la requête d'état «inactif» en supprime, supprimons également la requête avec l'identifiant de processus «12488». Les mêmes commandes ont été utilisées ici séparément sur le terminal jusqu'à présent. Les deux renvoient la «vraie» valeur booléenne des rendements, ce qui implique que la requête et la connexion spécifiques ont disparu.

Le même processus a été utilisé à nouveau pour la requête avec ID de processus «11164» comme indiqué.

Après avoir tué 3 requêtes `` inactifs '' avec leurs identifiants de processus, voyons si cela a réussi ou non. Utilisez la même instruction SELECT à l'aide de l'utilitaire «PG_STAT_ACTIVITY» pour afficher la liste de toutes les requêtes / processus du système de base de données. La sortie montre que toutes les requêtes «inactives» ont été supprimées en permanence et terminées jusqu'à présent.

Conclusion:

Ce tutoriel est un guide simple pour utiliser la fonction pg_cancel_backend () et pg_terminate_backend () pour tuer la requête spécifique et sa connexion. Le but principal de l'utilisation de ces fonctions dans les requêtes est de simplement supprimer les requêtes indésirables ou les séances de base de données, i.e., inactif. Ainsi, cet article a bien expliqué l'idée de nettoyer votre système de base de données à partir de requêtes et de connexions indésirables et «inactifs» en quelques secondes.