用語は製品・文献によって意味が異なることがあります。ここでは本書での使い方を短く整理します。厳密な条件や実装差は各章を参照してください。
| 用語 |
本書での意味 |
| ブロック/ページ |
DBMSがI/O、キャッシュ、チェックサムなどを管理する固定サイズの単位。製品によって呼称が異なる |
| レコード |
論理行をストレージ形式へ符号化したもの。ヘッダー、NULLビットマップ、バージョン情報などを含み得る |
| ヒープファイル |
キー順を維持せずレコードをページへ格納する基本構造。優先度キューのヒープとは別 |
| スロットページ |
スロット配列から可変長レコードのオフセットを参照し、レコードIDを維持したままページ内再配置できる形式 |
| レコードID / TID |
ページIDとスロットIDなどから物理レコードを指す識別子 |
| エクステント |
連続ページをまとめた割り当て単位 |
| 空き領域マップ |
空き領域を持つページを探すための補助構造 |
| バッファプール |
ストレージ上のページをメモリフレームへキャッシュするDBMS内部領域 |
| バッファフレーム |
バッファプール内で一つのページを保持するメモリスロット |
| 固定 |
使用中ページが置換されないようフレームを固定すること |
| 未書き出しページ |
メモリ上で更新済みだがデータファイルへ未書き出しのページ |
| キャッシュヒット / ミス |
必要ページがバッファプールにある/ストレージから読む必要がある状態 |
| 置換方針 |
バッファプールが満杯のとき追い出すフレームを選ぶ規則。LRU、時計など |
| 順次I/O |
近接ページを順に読むI/O |
| ランダムI/O |
離れたページへ移動しながら読むI/O |
| B-木 |
高分岐数の平衡探索木。製品名としてB+木的構造もB-木と呼ぶ |
| B+木 |
項目を葉へ集め、葉をキー順にリンクした多分探索木 |
| 分岐数 |
一つの内部ノードが持つ子数。大きいほど木の高さを抑えられる |
| ページ分割 |
満杯ノードを複数ページへ分け、親へ区切りを追加する処理 |
| クラスタ化インデックス |
表行の物理配置と強く結びつくインデックス。具体的意味は製品差が大きい |
| セカンダリインデックス |
主系/クラスタ化アクセス経路以外の検索経路 |
| 複合インデックス |
複数列を順序付きキーとして持つインデックス |
| カバリングインデックス |
クエリに必要な列を含み、表アクセスを省略できる可能性があるインデックス |
| インデックスのみの走査 |
表行本体を読まず、インデックスと可視性情報から結果を返す走査 |
| 部分インデックス |
述語を満たす行だけを含むインデックス |
| ハッシュインデックス |
ハッシュ関数でバケットを選び、主に等値参照を行うインデックス |
| 衝突 |
異なるキーが同じハッシュバケット/スロット候補へ対応すること |
| LSM-木 |
メモリの整列済み構造と不変整列済みファイルをマージする書き込み-指向構造 |
| Memtable |
LSM-木が新しい書き込みを受けるメモリ上の整列済み構造 |
| SSTable |
キー順に並んだ不変ファイル(整列済み文字列表) |
| コンパクション |
複数のSSTable/ランをマージし、バージョン、削除マーカー、配置を整理する処理 |
| 削除マーカー |
不変構造で削除を表す印 |
| Bloomフィルター |
「確実に存在しない」を判定でき、陽性には偽陽性を許す確率的集合 |
| 読み取り増幅 |
一つの論理読み取りで余分に読むページ/ファイル/バイト |
| 書き込み増幅 |
アプリケーションの論理書き込みに対しストレージへ実際に書くバイトの倍率 |
| 容量増幅 |
有効論理データに対する実ストレージ使用量の倍率 |
| 行指向 |
一行の列を近くへ配置するストレージ形式 |
| 列-指向 |
同じ列の値をまとめるストレージ形式 |
| 用語 |
本書での意味 |
| 解析器 |
SQL文字列をトークン/文法で解析して構文木を作る部分 |
| 名前解決器 / 解析器 |
表・列名をカタログへ結び、型・権限・曖昧さを検査する部分 |
| 関係代数 |
選択、射影、結合など関係を入出力とする演算子体系 |
| 論理計画 |
何を計算するかを表す演算子木 |
| 物理計画 |
どの走査/アルゴリズムで計算するかを具体化した実行計画 |
| 述語のプッシュダウン |
絞り込みを意味が変わらない範囲でデータ源近くへ移す書き換え |
| 射影の刈り込み |
後続で不要な列を早い段階で除く書き換え |
| 表 / 順次走査 |
表データページを順に読むアクセス経路 |
| インデックス走査 |
インデックス項目から該当行へ到達するアクセス経路 |
| ビットマップ走査 |
対象表ページをビットマップへまとめ、ページ順に読むアクセス経路 |
| 物理演算子 |
走査、ソート、結合、集約など物理計画の実行単位 |
| イテレーター / Volcanoモデル |
親演算子が子へ次を要求して行をプルする実行モデル |
| ベクトル化実行 |
行ではなく一括/ベクトル単位で演算子間を受け渡す実行モデル |
| パイプライン |
中間結果全体を保存せず、生成した行/一括を次演算子へ渡すこと |
| 実体化 |
中間結果をメモリ/一時的なストレージへ保存すること |
| パイプライン阻害演算子 |
全入力などを必要としパイプラインを止める演算子。ソート、ハッシュ構築など |
| ディスク退避 |
演算子のデータがメモリを超え、一時的なストレージへ退避すること |
| 外部ソート |
メモリ内ランを作り、ストレージ上で多方向マージするソート |
| ハッシュ集約 |
グループキーをハッシュ表へ置いて集約状態を更新する方式 |
| 入れ子ループ結合 |
外側行ごとに内側を走査/参照する結合 |
| インデックス入れ子ループ |
内側側インデックス参照を外側行ごとに行う入れ子ループ |
| ハッシュ結合 |
構築側からハッシュ表を作り、探索側のキーで検索する等値結合 |
| ソートマージ結合 |
両入力を結合キー順にし、先頭からマージする結合 |
| 構築 / 探索 |
ハッシュ結合でハッシュ表を作る入力/その表を検索する入力 |
| 半結合 |
右に一致がある左行を返し、右列や重複一致を出力しない結合 |
| 反結合 |
右に一致がない左行を返す結合 |
| 統計情報 |
最適化器がデータ量・分布を推定するためカタログへ持つ情報 |
| 選択率 |
述語を通る行の割合 |
| 行数 |
演算子が出力する行数 |
| NDV |
列に含まれる異なる値の数 |
| ヒストグラム |
値域をバケットへ分け、分布を近似する統計情報 |
| MCV |
最頻値。頻出値と頻度 |
| コストモデル |
I/O、CPU、メモリ、ネットワークなどを比較用コストへ換算するモデル |
| 結合順序 |
複数関係をどの順序・木形状で結合するか |
| EXPLAIN |
推定物理計画を表示する機能 |
| EXPLAIN解析 |
クエリを実行し、実行/時間/ループ数などを計画へ加える機能 |
| 計画キャッシュ |
プリペアド文などの計画を再利用するキャッシュ |
| 用語 |
本書での意味 |
| トランザクション |
複数読み取り/書き込みを一つのコミット/中止単位として扱うもの |
| ACID |
原子性、整合性、分離性、永続性 |
| 原子性 |
トランザクションの変更を全か無かにする性質 |
| 整合性(ACID) |
トランザクション前後で定義された不変条件を守る性質 |
| 分離性 |
並行するトランザクションの相互作用を制御する性質 |
| 永続性 |
コミット済み結果を対象障害後も保持する性質 |
| スケジュール / 履歴 |
複数トランザクション操作の時系列 |
| 直列化可能性 |
並行実行結果が何らかの直列注文と同等である性質 |
| 厳格直列化可能性 |
直列化可能性に実時間順序を加えた性質 |
| ダーティリード |
未コミット値を別トランザクションが読む異常 |
| 反復不能読み取り |
同一トランザクションの同じ行再読み取りで値が変わる異常 |
| ファントムリード |
述語再実行で一致行集合が変わる異常 |
| 更新消失 |
同じ古い値から計算した書き込みで一方の更新が失われる異常 |
| 読み取りスキュー |
複数項目から新旧の混ざった状態を読む異常 |
| 書き込みスキュー |
同じスナップショットを読んだトランザクションが別行を更新し、不変条件を壊す異常 |
| スナップショット分離 |
一貫したスナップショットを読み、書き込み-書き込み競合を防ぐが書き込みスキューを許し得る分離性 |
| 共有ロック |
読み取り用でほかの共有ロックと共存できるロック |
| 排他ロック |
書き込み用で共有/排他ロックと競合するロック |
| 意図ロック |
下位粒度へロックを取る意図を上位へ記録するロック |
| 2PL |
拡大段階でロックを取得し、縮小段階で解放する二相ロック |
| 厳格二相ロック |
書き込みロックをコミット/中止まで保持する2PL |
| 述語/範囲ロック |
述語に該当する現在・将来の行範囲を保護するロック |
| デッドロック |
トランザクションの待機関係が循環になり誰も進めない状態 |
| MVCC |
複数バージョンからスナップショットに可視なバージョンを選ぶ並行性制御 |
| 可視性 |
あるスナップショットからレコードバージョンが見えるかという規則 |
| 不要版の回収 / GC |
不要古いバージョンを回収する処理 |
| 悲観的制御 |
競合を予想し、操作前にロック/資源を確保する方式 |
| 楽観的制御 |
競合が少ないと仮定し、コミット前にバージョン/依存を検証する方式 |
| SSI |
スナップショット間の危険依存関係を検出しSerializableを作る方式 |
| 直列化障害 |
安全な直列順序を作れずトランザクションを中止したエラー |
| 用語 |
本書での意味 |
| WAL |
データページより先に復旧ログを永続化する先行書き込みログ |
| ログレコード |
更新、コミット、チェックポイントなどをWALへ記録した単位 |
| LSN |
ログシーケンス番号。WAL内の位置・順序 |
| ページLSN |
ページへ反映済みの最新ログ位置 |
| 再実行 |
コミット済みなど必要な変更をログから再適用すること |
| 取り消し |
未コミット変更を取り消すこと |
| フォース / フォースなし |
コミット時にデータページ本体の書き出しを要求する/しない方針 |
| スティール / スティールなし |
未コミット未書き出しページをストレージへ書き込みできる/できない方針 |
| グループコミット |
複数トランザクションのコミットを一度のWAL書き出しへまとめること |
| チェックポイント |
復旧開始を新しくするため実行中/未書き出し状態などを記録する処理 |
| ファジーチェックポイント |
トランザクションを止めず、変化中の状態を記録してページを徐々に書き出すチェックポイント |
| ARIES |
分析、再実行、取り消しでスティール/フォースなしDBを回復する代表的アルゴリズム |
| CLR |
取り消し進捗を記録する補償ログレコード |
| クラッシュ復旧 |
データ/WALストレージが残るプロセス/OSクラッシュから戻す処理 |
| 媒体障害 |
データファイル/WAL自体を失う・破損する障害 |
| PITR |
ベースバックアップとWALアーカイブから指定時点へ戻す時点復旧 |
| RPO |
許容できるデータ損失の時間・位置 |
| RTO |
許容できるサービス復旧時間 |
| 用語 |
本書での意味 |
| レプリケーション |
同じ論理データの複製を複数ノードへ維持すること |
| リーダー / フォロワー |
書き込み順序を決めるノード/リーダー ログを追従するノード |
| 同期レプリケーション |
コミット前に指定レプリカの確認応答を待つ複製 |
| 非同期レプリケーション |
レプリカの確認応答を待たず、リーダーでのローカルコミットを返す複製 |
| レプリカ遅延 |
リーダー位置とレプリカ受信/書き出し/再生位置の差 |
| 線形化可能性 |
操作がリクエスト-応答間の一点で起き、実時間順序を守るように見える性質 |
| 結果整合性 |
新しい書き込みが止まればレプリカが最終的に収束する性質 |
| 因果整合性 |
先行発生関係のある操作順を守る性質 |
| 書き込み後の読み取り保証 |
セッションが自分の完了済み書き込み以降を読む保証 |
| 単調読み取り |
一度読んだバージョンより古いバージョンへ戻らない保証 |
| クォーラム |
Nレプリカ中R/Wなど一定数の応答/確認応答を要求する方式 |
| 読み取り時修復 |
読み取り時にレプリカ差を見つけ、古い複製を修復すること |
| 不整合の定期修復 |
バックグラウンドでレプリカ差を比較・修復すること |
| ヒント付き引き渡し |
停止中の対象レプリカに代わり別ノードが書き込みを一時保持すること |
| フェイルオーバー |
障害時に待機系/フォロワーを新しい主系/リーダーへ切り替えること |
| フェンシングトークン |
古い所有者/リーダーの遅れて到着した操作を拒否する単調増加トークン/世代 |
| スプリットブレイン |
複数ノードが同時に正当なリーダーとして書き込みを受ける状態 |
| CAP |
ネットワーク分断時に線形化可能整合性と可用性を同時に常時満たせないこと |
| PACELC |
パーティション時のA/Cに加え、通常時の遅延時間/整合性トレードオフを表す考え方 |
| 合意 |
障害下で一つの決定/順序付けられたログへ合意する問題 |
| 状態機械レプリケーション |
同じコマンドログを決定論的状態機械へ適用してレプリカ状態を一致させる方式 |
| Raft任期 |
リーダーの世代を表す単調増加論理時計 |
| Raftコミット済み位置 |
クラスターがコミット済みと認識し適用可能なログ接頭辞位置 |
| 過半数 |
⌊N/2⌋+1ノード。異なる過半数同士が必ず交差する |
| 分割 |
論理データ集合を複数部分へ分割すること |
| シャーディング |
水平パーティションを複数ノードへ配置すること |
| シャードキー |
データ配置とリクエスト振り分けを決めるキー |
| パーティション刈り込み |
述語から不要パーティションを除外すること |
| 分散問い合わせと集約 |
複数シャードへリクエストを分岐数し結果を集約すること |
| コロケーション |
関連データを同じパーティション/ノードへ置くこと |
| グローバルセカンダリインデックス |
基底データとは別分割で全シャードを横断するインデックス |
| 再均衡化 / 再シャーディング |
パーティション所有権や境界を変更しデータを移動すること |
| 集中箇所 / 偏り |
データ量または負荷が一部パーティション/キーへ偏ること |
| 用語 |
本書での意味 |
| 原子的なコミット |
複数参加者が全員コミットまたは全員中止する決定 |
| 2PC |
準備/投票とコミット/中止決定の二段階で原子的なコミットするプロトコル |
| 準備済みトランザクション |
調整役決定へ従えるよう永続状態と資源を保持したトランザクション |
| 結果未確定 |
準備済み後、最終決定が不明で待機している状態 |
| Saga |
長いワークフローを局所トランザクションと補償へ分けるパターン |
| 補償 |
既にコミットした業務操作を業務上打ち消す新しい操作 |
| オーケストレーション |
中央ワークフロー構成要素がSaga手順を指揮する方式 |
| コレオグラフィ |
サービスがイベント反応で次手順を進める方式 |
| 二重書き込み |
一つの業務操作で独立システムへ個別書き込みすること |
| トランザクショナル・アウトボックス |
業務行と送信予定イベントを同じ局所トランザクションへ保存するパターン |
| CDC |
DB変更ログから変更イベントを取得する変更データキャプチャ |
| インボックス |
コンシューマーが処理済みイベントIDを業務更新と同じトランザクションへ記録するパターン |
| 最大1回 |
0回または1回配信/処理 |
| 1回以上 |
最低1回だが重複を許す配信/処理 |
| 冪等性 |
同じ操作を複数回適用しても業務結果が一つになる性質 |
| 冪等性キー |
再試行を同じ論理操作へ結びつける一意キー |
| 結果不明 |
タイムアウト等で操作がコミットしたかクライアントから不明な状態 |
| Lamport時計 |
先行発生ならタイムスタンプ大小を保つ論理時計 |
| ベクトル時計 |
ノードごとのカウンターで因果順序と同時実行性を表す時計 |
| 用語 |
本書での意味 |
| 接続プール |
DB接続を再利用し、DBへ流す同時実行性を制限する仕組み |
| 逆圧 |
下流容量を超える処理をキュー/拒否/流量制限で抑えること |
| プリペアド文 |
SQL構造を準備しパラメーターを後から与える文 |
| N+1クエリ |
一覧1クエリの各行ごとに追加クエリを発行するパターン |
| キーセットページ送り |
最後のソートキーをカーソルとして次ページを読むページ送り |
| 拡張・縮約方式 |
スキーマを追加→移行→旧要素削除の互換段階へ分ける移行 |
| オンラインDDL |
読み取り/書き込み停止を抑えてスキーマ/インデックスを変更する機能 |
| 既存データの補完 |
既存行へ新しい列/データを段階的に埋める処理 |
| SLO |
サービスレベル目標。測定可能な信頼性/遅延時間目標 |
| 復元訓練 |
バックアップから実際に復元しRTOと整合性を検証する訓練 |
| 計画切り替え |
計画済み保守で主系/待機系ロールを安全に交換すること |
用語を一つだけ覚えるのではなく、「どの問題を解き、何を代償にするか」を各章で確認してください。