コピペコードで快適生活

明日使えるソースを自分のために

PostgreSQL

db:migrateで巨大なテーブルへadd_column+default値設定をする

Rails + PostgreSQL環境での話。 数千万行あるような巨大なテーブルに対して、add_column+default設定をまとめて設定すると、サービスを止めてしまうほどに長時間テーブルロックかかってしまう。AccessExclusiveLockなのでSELECTも通らない。 原因は、ALTER_…

PostgreSQLでプロセスとロック状況を確認する

## 実行中のSQLを確認する。 SELECT * FROM pg_stat_activity; ## 実行中のSQLを確認する ## スロークエリとか主に見る分だけ SELECT pid, query_start, substr(query, 0, 80) AS query FROM pg_stat_activity WHERE state='active' ORDER BY query_start; #…

SELECT文の評価順序メモ

たまに「どうだったっけ?」と忘れてしまう時があるので。 https://qiita.com/suzukito/items/edcd00e680186f2930a8 よりメモ FROM ON JOIN WHERE GROUP BY HAVING SELECT DISTINCT ORDER BY TOP(LIMIT)

PostgreSQLのEXPLAINについて

PostgreSQLで重たいクエリの調査したときのメモ。 EXPLAINについて EXPLAINは問い合わせプランを表示するコマンド。PosgreSQLではSQL実行前に、プランナで問い合わせの実行コストを見積もり、 最小コストの問い合わせプランを算出する(問い合わせの最適化)。…

PostgreSQLの基本的なコマンド

これまでMySQLばかり使ってきてPostgreSQLの操作に戸惑ったので、よく使う基本的なコマンドをメモしました。 シェルでの操作 # 接続 psql -U USERNAME # DB指定で接続 psql -d postgres # ダンプ pg_dump -U USERNAME DBNAME > DUMP_FILE # ダンプ(データだ…