事后分析锁的任何方法?

时间:2011-05-21 10:17:40

标签: postgresql

假设我有一个持续了几个小时的锁并导致很多查询等待它,但它在我有机会进行调查之前就被释放了。有没有办法看到那个锁在哪里?特别要在日志中寻找什么?

1 个答案:

答案 0 :(得分:2)

我过去遇到过类似的问题并编写了一个简单的bash脚本,该脚本检查了数据库并保存了我想要的每个分钟上带有时间戳的视图副本,以便稍后我可以查看问题时的数据通过。这是我使用的那个,当连接的后端超过50个时,它会抓取pg_stat_activity。随意以任何适合您的方式破坏它:

#!/bin/bash
threshold=50;
dt=`date +%Y%m%d%H%M%S`;
active=`/usr/bin/psql www -Atc "select count(*) from pg_stat_activity where current_query not ilike '%idle%';"`
if [[ active -gt threshold ]]; then
    echo "there are "$active" backends";
    echo "creating backup for pg_stat as pg_stat_bk_$dt"
    psql www -c "select * into monitoring.pg_stat_bk_$dt from pg_stat_activity where current_query not ilike '%idle%';"
fi