PostgreSQL

PostgreSQLで MySQLの show processlist みたいなことをする

select * from pg_stat_activity;postgresql.conf の show_statement_stats を true にしておくと実行中のクエリも参照できる。

clusterコマンドでシーケンシャルスキャンが劇的に速くなるのはどうして?

vacuum analyze や reindex をしても大して速くならないシーケンシャルスキャンが、cluster コマンドを発行してみると劇的に速くなることがある。 が、どうして速くなるのか、その仕組みが分からない。 clusterするインデックスは何でもいいようだ。例えば主…

プランナの操作方法

あんまり本番環境で使える機能ではないが、 set XXXX to on set XXXX to offでプランナを操作できる。 PostgreSQLが納得いかないプランを吐くときに、setコマンドで結合方式を無理やり変えて実行してみると、 プランナが正しい判断をしていることを思い知る…

どのテーブルでも "oid" 列の検索ができる

PostgreSQLの場合、どのテーブルも oid 列を持っていて、selectで oid 列にアクセスできる。 select oid from xxxxoidを使えば重複行の一方だけ更新したり、削除したりできる。