覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

PostgreSQL

PostgreSQL の デッドタプルの状況等の統計情報を確認する

PostgreSQLにおいて、デッドタプルの割合 や いつvacuum, analyzeが実行されたか を把握したい場面があります。 そういう時によく実行しているSQLのメモです。 SQL SELECT relname AS relname, n_live_tup AS live_tupple, n_dead_tup AS dead_tupple, COALE…

psqlでnull を明示的に表示したい

Postgres の psql を使って SELECT の SQL を実行した場合に、対象のカラムの値が null なのか 空文字列なのか区別がつきにくいです。 そういった場合は、nullを明示的に分かりやすい文字列で表示する設定を行うのがよいです。 たとえば、値が null なら "(n…

WSL環境へのPostgreSQLのインストール作業メモ

Windows 11のWSL(Ubuntu)環境に PostgreSQL をインストールした際の実行メモです。 ■まずは sudo apt update で パッケージ一覧を更新 sudo apt update ■Postgres をインストール sudo apt install postgresql ■Postgres の再起動を実行 sudo /etc/init.d/…

PostgreSQL - カラムを色々操作したい

PostgreSQLのテーブルのカラムを色々操作したい(変更したい)ことがあったりするので、 それ用のメモです カラムの型を変更する ALTER TABLE {テーブル名} ALTER COLUMN {カラム名} TYPE {新しいカラムの型}; ■実行例 ALTER TABLE dummy_table ALTER COLUMN…

PostgreSQL - テーブルとindexのサイズを確認する

PostgreSQLでテーブルのレコード数ではなく容量(サイズ)を知りたい場合があります。 その場合には以下のSQLを実行することで各テーブルと各indexのサイズを確認できます。 select objectname, to_char(pg_relation_size(objectname::regclass), '999,999,999…

PostgreSQL - DBに接続しているセッションの確認

PostgreSQLで現在DBに接続しているセッションの情報は以下SQLを実行することで取得できます select procpid, datname, client_addr from pg_stat_activity where datname = '{DB名}'; ■実行例 SAMPLEDB=> select procpid, datname, client_addr from pg_stat…

PostgreSQL - トリガーの確認

PostgreSQLでトリガーに関する情報を取得するための各種操作についてのメモ トリガーの一覧取得 トリガーの一覧は以下のSQLで取得できます SELECT * FROM pg_trigger; ■実行例 SELECT * FROM pg_trigger; tgrelid | tgname | tgfoid | tgtype | tgenabled | …

PostgreSQL - DBのデータをCSVに出力したい

DBのデータをCSV出力したいという場面は多々あると思います。 PostgreSQLにpsqlで接続して特定のコマンドを実行すればCSVファイルへの出力ができます。 テーブルの全データをCSVに出力する 単純に特定のテーブルの全データをCSV出力する場合は以下のコマンド…

PostgreSQLでSQLの実行時間を計測する

psqlで以下コマンドを実行することで各SQLの実行時間を計測できます \timing 実行すると Timing is on. と出力されます SAMPLEDB=> \timing Timing is on. コマンドを実行した後、SQLを発行すると以下のように実行時間が出力されます SAMPLEDB=> select coun…

PostgreSQLでindex作ったり削除したり

PostgreSQLでのindexの作成方法や削除方法など indexの作成 以下の構文でできます CREATE INDEX {index名} ON {Table名} ({Column名}); これにより作成されるindexの種類はbtreeになります。 ■実行例 SAMPLEDB=> CREATE INDEX sampletbl1_column1_idx ON sam…