zoukankan      html  css  js  c++  java
  • POSTGRESQL 锁表的问题

    一、找出所的语句

    select
        wait.pid,
        wait.query as wait_query,
        wait.query_start as wait_query_start,
        wait.locktype,
        granted.pid as waitfor_pid,
        granted.relation,
        granted.datname || '.' || d.nspname || '.' || c.relname as name,
        granted.transactionid,
        granted.virtualxid,
        granted.usename,
        granted.client_addr,
        granted.query_start,
        granted.query
    from
        (select
              a.query,
              a.query_start,
              b.pid,
              b.relation,
              b.transactionid,
              b.page,
              b.tuple,
              b.locktype,
              b.virtualxid
         from
              pg_stat_activity a,
              pg_locks b
         where
              a.waiting = 't'
              and a.pid = b.pid
              and granted = 'f'
        ) wait
    join
        (select
            b.pid,
            b.usename,
            b.client_addr,
            b.backend_start,
            b.query_start,
            b.waiting,
            b.query,
            b.datname,
            a.relation,
            a.transactionid,
            a.page,
            a.tuple,
            a.locktype,
            a.virtualxid
        from
            pg_locks a,
            pg_stat_activity b
        where
            a.pid = b.pid
            and a.granted = 't'
        ) granted
    on (
        ( wait.locktype = 'transactionid'
        and granted.locktype = 'transactionid'
        and wait.transactionid = granted.transactionid )
        or
        ( wait.locktype = 'relation'
        and granted.locktype = 'relation'
        and wait.relation = granted.relation
        )
        or
        ( wait.locktype = 'virtualxid'
        and granted.locktype = 'virtualxid'
        and wait.virtualxid = granted.virtualxid )
        or
        ( wait.locktype = 'tuple'
        and granted.locktype = 'tuple'
        and wait.relation = granted.relation
        and wait.page = granted.page
        and wait.tuple = granted.tuple )
    )
    left join
        pg_class c
    on ( c.relfilenode = wait.relation )
    left join
        pg_namespace d
    on ( c.relnamespace = d.oid )
    order by
    granted.query_start
    ;

    二、杀掉依赖的sql

    select pg_terminate_backend(进程id)
  • 相关阅读:
    mysql alter table时的表锁是mysql服务层加的还是存储引擎加的
    show databases in redis
    Docker-compose中的使用技巧
    debian切换源
    C# MVC(File)控件多张图片上传加预览
    C# DateTime日期格式化
    DropDownList的使用,RadioButtonList的使用
    access数据库连接问题
    动态获取ul,li的数据
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/liqiu/p/4079686.html
Copyright © 2011-2022 走看看