PostgreSQL
- PostgreSQL ではテーブル内に INSERT/UPDATE/DELETE で格納する行(row)のことをタプル(tuple)と呼ぶ
show processlist
select * from pg_stat_activity;
接続
# psql --host=localhost --username=hoge --dbname=hoge_db --password
設定ファイルリロード
# test> select pg_reload_conf();
- 再起動が必要な設定値もある
SQL 処理時間計測
- クエリ実行前に \timing 実行する
PG-Storm
backup
# pg_dump -U [user] -h [host] [database] > dump.sql
restore
# psql [database] < dump.sql
kill query
SIGINT
select pg_cancel_backend(process_id);
SIGTERM
select pg_terminate_backend(process_id);
show database
=> \l
show tables
=> \d
change database(example_sql)
postgres=# \c example_sql psql (9.2.23, サーバー 10.1) 注意: psql バージョン 9.2, サーバーバージョン 10.0. psql の機能の中で、動作しないものがあるかもしれません。 データベース "example_sql" にユーザ"postgres"として接続しました。 example_sql=#
タプルのみ表示
=> \t
Docker
run
$ sudo docker run --name postgresql_training -e POSTGRES_PASSWORD=sql -d postgres
connect
$ psql --host=172.17.0.2 --username=postgres --password ユーザ postgres のパスワード: psql (9.2.23, サーバー 10.1) 注意: psql バージョン 9.2, サーバーバージョン 10.0. psql の機能の中で、動作しないものがあるかもしれません。 "help" でヘルプを表示します. postgres=#
create database
postgres=# create database example_sql; CREATE DATABASE
Docker
- 初期データありでの起動
初期データ作成
$ vim sql/init.sql
起動
$ docker run -it --rm --name postgresql -v $(pwd)/sql:/docker-entrypoint-initdb.d -e POSTGRES_USER=dev -e POSTGRES_PASSWORD=secret -d postgres:latest
References
work_mem
- コネクション毎に、内部並べ替えとハッシュテーブル操作が使用するメモリ容量を指定
rds.log_retention_period
- ログを保存する期間
log_hostname
- 接続元のホスト名を名前解決するかどうか
PostgreSQL のスペック変更に合わせて調整するパラメータ
- shared_buffers
- work_mem
- effective_cache_size
- SSD を採用している場合は以下のパラメータを調整
- random_page_cost