データベース内のすべてが正常に実行されていました-読み取り、書き込み、多くのアクティビティ。
foos
次に、テーブルに列を追加したいと思いました。foos
テーブルが使用できなくなりました。クエリを実行しているコードを終了し、システム内のロックを調べました。以下のクエリが 15 日間ロックされていることがわかりました。その後、テーブルを変更するクエリがあり、その後、foos
テーブルに関係するさらに多くのクエリがありました。
このクエリが 15 日間停止する原因は何ですか? これは 9.1.3 にあります
select generate_report, b.count from
(select count(1), date_trunc('hour',f.event_happened_at) from
foos as f, bars as b
where age(f.event_happened_at) <= interval '24 hour' and f.id=b.foo_id and b.thing_type='Dog' and b.thing_id=26631
group by date_trunc('hour',f.event_happened_at)) as e
right join generate_report(date_trunc('hour',now()) - interval '24 hour',now(),interval '1 hour')
on generate_report = b.date_trunc
order by generate_report;
更新:からの情報pg_stat_activity
| | backend_start | xact_start | query_start | 待っている | -------+---------+----------+------------------+-- --------------+--------------------------------+----------------- ------- | | 2012-11-19 18:38:40.029818+00 | 2012-11-19 18:38:40.145172+00 | 2012-11-19 18:38:40.145172+00 | ふ |
更新:説明の出力:
Merge Left Join (cost=14135.74..14138.08 rows=1000 width=16)
Merge Cond: (generate_report.generate_report = (date_trunc('hour'::text, f.event_happened_at)))
-> Sort (cost=12.97..13.47 rows=1000 width=8)
Sort Key: generate_report.generate_report
-> Function Scan on generate_report (cost=0.00..3.00 rows=1000 width=8)
-> Sort (cost=14122.77..14122.81 rows=67 width=16)
Sort Key: (date_trunc('hour'::text, f.event_happened_at))
-> HashAggregate (cost=14121.93..14122.17 rows=67 width=8)
-> Hash Join (cost=3237.14..14121.86 rows=67 width=8)
Hash Cond: (b.foo_id = f.id)
-> Index Scan using index_bars_on_thing_type_and_thing_id_and_baz on bars b (cost=0.00..10859.88 rows=10937 width=4)
Index Cond: (((thing_type)::text = 'Dog'::text) AND (thing_id = 26631))
-> Hash (cost=3131.42..3131.42 rows=30207 width=12)
-> Seq Scan on foos f (cost=0.00..3131.42 rows=30207 width=12)
Filter: (age((('now'::text)::date)::timestamp without time zone, event_happened_at) <= '24:00:00'::interval)