Table de déverrouillage PostgreSQL
1. Afficher la situation de verrouillage d'une seule table
SELECT relation ::regclass
,t.*
FROM pg_locks t
WHERE relation = 'tzq_log_t' ::regclass;
2. Annuler un sql de longue durée
2.1. Terminer la requête, mais la connexion reste en place
SELECT pg_cancel_backend(pid);
2.2. Terminer la requête et couper la connexion en même temps
SELECT pg_terminate_backend(pid);
Troisièmement, affichez les informations détaillées de la table de verrouillage
SELECT 'select pg_terminate_backend(' || pid || ');' AS unlock_script
,pid
,state
,usename
,query
,query_start
,client_addr
FROM pg_stat_activity
WHERE pid IN (SELECT pid
FROM pg_locks l
,pg_class t
WHERE l.relation = t.oid
AND t.relkind = 'r'
AND t.relname = 'tzq_log_t');
Copiez directement les données dans la première colonne de unlock_script, et vous pouvez directement exécuter et tuer la connexion.