sql >> Database >  >> RDS >> PostgreSQL

Hoe eventuele Postgres rijsloten losmaken?

Het is mogelijk om de sluizen te zien.

Hier is een weergave om het een beetje gemakkelijker te maken dan pg_locks rechtstreeks te gebruiken:

CREATE OR REPLACE VIEW public.active_locks AS 
 SELECT t.schemaname,
    t.relname,
    l.locktype,
    l.page,
    l.virtualtransaction,
    l.pid,
    l.mode,
    l.granted
   FROM pg_locks l
   JOIN pg_stat_all_tables t ON l.relation = t.relid
  WHERE t.schemaname <> 'pg_toast'::name AND t.schemaname <> 'pg_catalog'::name
  ORDER BY t.schemaname, t.relname;

Vervolgens selecteert u gewoon uit de weergave:

SELECT * FROM active_locks;

En dood het met:

SELECT pg_cancel_backend('%pid%');

Andere oplossingen:http://wiki.postgresql.org/wiki/Lock_Monitoring



  1. SQL SERVER – Een truc om met dynamische SQL om te gaan om een ​​SQL-injectieaanval te voorkomen?

  2. SQLite INTERSECT-operator

  3. foreach %dopar% + RPostgreSQL

  4. Brent Ozar legt interne en externe fragmentatie van SQL Server uit