メインコンテンツへ
データベースDB実践

テーブルパーティショニングに関する説明として、最も適切なものはどれか。

ア.パーティショニングを行うと、クエリは必ず全パーティションを検索するため、小規模テーブルには効果がない。
イ.水平パーティショニングは列を分割し、アクセス頻度の低い列を別テーブルに移動してIOを削減する手法である。
ウ.水平パーティショニング(シャーディング)は行単位でテーブルを分割し、垂直パーティショニングは列単位でテーブルを分割する手法である。正解
エ.垂直パーティショニングは行を年月などの範囲で分割し、古いデータを自動的にアーカイブする仕組みである。

解説

パーティショニングは「大きな本棚を区画割りする」イメージ。水平=棚の段を行で区切る(2020年の本・2021年の本…)、垂直=棚の列を属性で区切る(タイトルの棚・著者の棚…)。

なぜ ウ が正解か

ウが正解。水平パーティショニングはレコード(行)単位で分割する。例:注文テーブルを年月でRange分割、ユーザーIDでHash分割。垂直パーティショニングはカラム(列)単位で分割する。例:アクセス頻度の高い列だけをホットテーブルに残す。

なぜ イ は間違いか

イは水平と垂直を入れ替えた説明。列を分割するのは「垂直パーティショニング」の特徴。

なぜ ア は間違いか

パーティションプルーニングという機能により、WHERE句の条件に合致するパーティションだけを検索できる。全パーティション検索が必須というのは誤り。

なぜ エ は間違いか

行を範囲で分割するのは「水平パーティショニング」の説明。垂直パーティショニングはあくまでも列の分割。

出典: AI生成問題(学習用)