DB講座(全13回)で回をまたいで繰り返し登場する用語を、1行の説明で引けるようにした 索引である。各回の冒頭にある「この回で新しく出てくる用語」表と同じ説明を載せ、詳しく扱う回への リンクを添えている。読み進めていて意味が取れない語に出会ったら、まずここを引く。
各回の本編で厚く定義される主題語(B-tree、MVCC など)はここには載せない。載せるのは 「主役として説明される機会がないまま、複数の回で使われる脇役の語」である。ただし除外してよいのは、 その回の本編に実際に定義文がある語に限る。主題語であっても定義が見当たらない場合は、まず本編と その回の用語表に定義を置き、それでも回をまたいで引く必要があるならここにも載せる。「主題語だから 本編にあるはずだ」と確認せずに外すと、本編・用語表・用語集のどの網からも落ちる語が生まれる。
| 用語 | 一行での説明 | 詳しく扱う回 |
|---|---|---|
::(キャスト) | 値を別の型として解釈し直す記法。式::型名 と書く | 第5回 |
|| | 文字列どうしを連結する演算子 | 第1回 |
ARRAY[...] | 配列を作るリテラル記法。(ARRAY[...])[n] で n 番目を取り出す | 第1回 |
= ANY(配列) | 配列に含まれるどれかと一致するかを判定する述語。IN (...) を1つのパラメータで書ける形 | 第11回 |
@> | 左が右を含むかを判定する演算子。範囲型・jsonb などで使う | 第6回 |
&& | 2つの範囲が重なるかを判定する演算子 | 第6回 |
~~ | LIKE と同じ意味の内部表記。EXPLAIN の出力に現れる | 第7回 |
| 用語 | 一行での説明 | 詳しく扱う回 |
|---|---|---|
VALUES | 行の並びをその場で書き下し、テーブルとして扱う構文 | 第2回 |
interval | 「3日」「1か月」のような期間・長さを表す型。interval '3 days' と書く | 第5回 |
GENERATED BY DEFAULT AS IDENTITY | 値を省略したとき連番を自動採番する列の宣言。明示的な値の挿入も許す | 第4回 |
ON CONFLICT ... DO NOTHING | 一意制約に衝突した行をエラーにせず黙って捨てる INSERT の指定 | 第11回 |
DISTINCT ON (列) | 指定した列の値ごとに、ORDER BY の先頭1行だけを残す PostgreSQL 独自の構文 | 第3回 |
RETURNING | INSERT/UPDATE/DELETE が処理した行の値を、その場で返させる句 | 第6回 |
DO $$ ... $$ | 関数を定義せずに手続き型のブロックをその場で実行する構文 | 第13回 |
| 用語 | 一行での説明 | 詳しく扱う回 |
|---|---|---|
generate_series(1, N) | 1 から N までの整数を1行ずつ返す集合返却関数 | 第1回 |
date_trunc('month', 時刻) | 日時を指定した単位で切り捨て、その期間の先頭の時刻を返す関数 | 第3回 |
coalesce(a, b) | 引数を左から見て、最初に NULL でない値を返す関数 | 第3回 |
array_agg(列) | グループ内の値を1つの配列にまとめる集約関数 | 第3回 |
format(...) | 書式文字列から SQL 文などの文字列を組み立てる関数。%L はリテラル、%s は素の文字列 | 第13回 |
| 用語 | 一行での説明 | 詳しく扱う回 |
|---|---|---|
| GUC | サーバやセッションの動作を変える実行時パラメータの総称(Grand Unified Configuration) | 第1回 |
| DDL(Data Definition Language) | テーブルや制約など、データの入れ物の定義を変更する SQL の総称(CREATE/ALTER/DROP) | 第5回 |
| DML(Data Manipulation Language) | 行そのものを読み書きする SQL の総称(SELECT/INSERT/UPDATE/DELETE) | 第10回 |
| スーパーキー | 行を一意に識別できる属性の組。最小である必要はなく、候補キーはその中で最小のもの | 第4回 |
| オペレータクラス(opclass) | 索引が値をどの演算子でどう比較するかを決める規則の組。同じ B-tree でも比較の仕方を差し替えられる | 第7回 |
IMMUTABLE | 同じ引数なら常に同じ結果を返し、DB の中身を読まない関数につける宣言。式インデックスに使える条件 | 第7回 |
| 共有バッファ | PostgreSQL がディスクのページを載せておく共有メモリ上のキャッシュ | 第8回 |
| 選択率 | 条件を満たす行が全体に占める割合。プランナが読む行数を見積もる基礎になる | 第8回 |
work_mem | 1回のソートやハッシュ表の作成に使ってよいメモリ量の上限を決める設定 | 第8回 |
| 拡張統計 | 複数列の相関をプランナに教えるために、明示的に作成する統計情報 | 第8回 |
SQLSTATE | エラーの種類を表す5文字の標準コード。40001 は直列化失敗、40P01 はデッドロック | 第9回 |
VACUUM | 不要になった古い行(死タプル)の領域を回収して再利用可能にする保守処理 | 第12回 |
| autovacuum | 更新量に応じて VACUUM を自動で走らせる仕組み | 第12回 |
| WAL(Write-Ahead Log) | 変更をデータファイルに反映する前に記録する先行書き込みログ | 第12回 |
| トリガ | 行の挿入・更新・削除に反応して、自動的に指定した関数を実行させる仕組み | 第6回 |
| ビュー | 名前を付けて保存した SELECT 文。テーブルと同じように参照できる | 第6回 |
| 部分索引 | 条件に合う行だけを載せた索引。対象が偏っているとき小さく速い | 第7回 |
| 用語 | 一行での説明 | 詳しく扱う回 |
|---|---|---|
| B-tree | 値をソート順に並べた多段の木。等値・範囲・並べ替えに効く既定の索引 | 第7回 |
| GIN | 1つの値の中に複数の要素を含むもの(配列・jsonb・全文)を検索するための索引 | 第7回 |
| GiST | 範囲型・幾何型・近傍検索・排他制約のための索引 | 第7回 |
| BRIN | 物理的な並び順と値の順序が揃った巨大な表向けの、極小サイズの索引 | 第7回 |
pg_trgm | 文字列を3文字の断片に分けて類似度・中間一致検索を可能にする拡張 | 第7回 |
すべて第8回で扱う。第7回の実測例にも先に登場するため、意味だけ先に置く。
| 用語 | 一行での説明 |
|---|---|
| Seq Scan | テーブルの全ページを順に読む方式 |
| Index Scan | 索引をたどって該当行の住所を得て、本体を読む方式 |
| Index Only Scan | 必要な列がすべて索引にあり、本体を読まずに完結する方式 |
| Bitmap Index Scan / Bitmap Heap Scan | 索引で「どのページに該当行があるか」の地図を作り、本体をページ順にまとめ読みする2段構えの方式 |
| Nested Loop / Hash Join / Merge Join | 2つの表を結合する3つの方式 |
| Append | 複数の子テーブル(パーティションなど)の結果を順に連結するノード |
| Index Cond | 索引をたどる時点で使えた条件 |
| Filter | 行を読んだ後に捨てるために使われた条件 |
| Buffers | 読んだブロック数。hit はキャッシュ命中、read はディスク読み |
| 用語 | 一行での説明 | 詳しく扱う回 |
|---|---|---|
| ORM(Object-Relational Mapping) | オブジェクトとテーブルの行を対応づけ、SQL を書かずに DB を操作させるライブラリの総称 | 第11回 |
| psql メタコマンド | psql が解釈するバックスラッシュ始まりのコマンド。SQL ではない | 第1回 |