データベースのクラスタ構成
シェアードナッシング方式
共有しない方式です。データベースを分割してそれぞれ独立させる方式です。アプリケーションの各プロセスが別々のデータベースにアクセスします。
メリット
一つのデータベースにアクセスが集中しないため性能が劣化することはないです。
デメリット
分割したデータベースにアクセスするノードどれかに障害が発生するとそのデータへはアクセスできなくなってしまいます。
シェアードエブリシング方式
共有する方式です。データベースが一つで、アプリケーションの各プロセスで共有して使います。
メリット
DBにアクセスするノードのどれかに障害が発生してもデータへは問題なくアクセスができます。
デメリット
DBにアクセスが集中すると性能が劣化してしまいます。
物理分割(パーティション)とは?
テーブルの特定のキーを分割キー(パーテーション化キー)としてその値の種類によってテーブルを物理的に複数セグメントに分割してクエリのパフォーマンスを向上させる技術のことです。
できること
- クエリを高速化できる。
- パーテーションごとにDROPやTRUNCATE等の管理作業ができます。
クエリの高速化
仕組み
テーブル自体は物理的には分かれていますが、アプリケーション側からは論理的には1つのテーブルに見えています。
用途
テーブルへのアクセス範囲を絞ることになるためパラレル処理との相性が良いです。
必要なこと
基本的には、索引と同じ要領でWHERE句にパーテーション化キーを指定しますが、FULLSCANでも動作はします。
パーティションテーブルの種類
レンジ・パーティション
「キー項目の値がここからここまではこのパーテーション」というように値の範囲でパーティションを決めることです。各パーティションごとに配置する表領域を指定します。
用途
日付やID等の連続した数字を分割したい場合に有効です。
ハッシュ・パーティション
キー項目の値から決められた数のパーティションに自動均等に割り振ります。
用途
用意したパーティション数に応じて均等な数に分割したい場合に有効です。
ハッシュとは?
一般的に一番単純なハッシュを求めるロジックとしては「キー値を分割数で割った余りを算出すること」です。実際はもう少し複雑な物になり、基本的にはRDBMS側ではハッシュの算出ロジックは公開されていません。
リスト・パーティション
キー項目の値が事前に決まっている複数値のどれに該当するかで分割する方式です。例えば、「正社員」に該当するパーティション、「派遣社員」に該当するパーティションというような具合です。
用途
キー値の取りうる種類が予め決まっていてその数が少ない場合に有効です。
Oracleにおいて
パーティショニング機能は、Enterprise Editionの有料オプションになるので無料版では使えません。
この記事へのコメントはありません。