みなさんこんにちは。技術系Q&Aサイトteratail開発チームの出川幾夫です。
PostgreSQLはMySQLと並んで広く使われているオープンソースのRDBMSです。商用のRDMBSと比較しても遜色ない高機能なRDMBSですが,
今回はPostgreSQLの,
PostgreSQLのデータ型・関数
PostgreSQLではさまざまなデータ型が利用可能です。文字列型はchar,
integer型やfloat型などの数値型にはMySQLにあるようなUNSIGNEDはないので注意が必要です。IDなどの連番を表現するにはserial型が便利です。またtimestamp型,
PostgreSQLのデータ型で特徴的なのが配列型です。その名の通り1つのカラムに複数個のデータを格納することができ,
配列型は,tag_
カラムをintegerの1次元配列として定義すると以下のようになります。
CREATE TABLE users (
name varchar(32),
tag_ids integer[]
);
PostgreSQLの配列のインデックスは1始まりです。配列からデータを取り出す際の配列リテラルは{1,2,3}
のように表現でき,
またJSONを保存するJSON型というのもPostgreSQL9.array_
やjson_
などJSONを扱うための組み込み関数も豊富で,
INSERT INTO settings (id, data) VALUES (1, '{ "notifications": {"mail": true, "mobile": true}}');
PostgreSQL9.
複合型というプログラミング言語で言う構造体のような役割を果たす型も存在します。テーブル作成時には同名の複合型が作られます。
これらの非正規化を実現する型はクエリを短縮しパフォーマンスをあげることができますが,
Window関数も便利です。rank()
やrow_
など集約関数に似た動きする関数が用意されています。
SELECT username, rank() OVER (ORDER BY point DESC) AS rank FROM users;
他にもMySQLなど他のRDBMSとは細かな違いがあります。他のDBの癖をそのまま使ってしまわないように基本的な部分は設計時に予め確認しておきましょう。
基礎的な設定項目
PostgreSQLの基本的な設定はpostgresql.
実際に反映されている設定パラメータの値はSHOW ALL
で確認ができます。
=# SHOW ALL;
shared_
は,
log_
はいわゆるスロークエリをログに残すための設定です。ミリ秒単位で記述し,
他にも設定パラメータは多く存在しますので,
postgresql.
- 参考:PostgreSQLでDBバックアップのパフォーマンスチューニングをする方法
- https://
teratail. com/ questions/ 3785 - 参考:Postgresで複雑なSQLの実行計画の制御
- https://
teratail. com/ questions/ 846