連載
» 2006年12月21日 00時00分 公開

SQL Server 2005を使いこなそう(11):データパーティショニングで巨大DBも楽々管理 (1/3)

5年ぶりのメジャーバージョンアップとなったSQL Server 2005。本連載では、SQL Server 2005への移行を検討しているデータベース管理者に向け、新規に実装されたさまざまな機能の詳細を紹介していく。(編集局)

[石橋潤一,株式会社システムインテグレータ]

主な内容

--Page 1--

データパーティショニングのメリット

データパーティショニングの構築手順

--Page 2--

データパーティショニングの実装

--Page 3--

データパーティショニングを利用したスライディングウィンドウ

まとめ

連載の終わりに


 これまでSQL Server 2005の新機能を取り上げてきた本連載も、今回で最終回となります。これまでBI関連やSQL CLR、データベースミラーリングなどを取り上げてきましたが、今回はデータパーティショニングを取り上げます。

データパーティショニングのメリット

 データパーティショニングは、SQL Server 2005 Enterprise Editionで利用可能な大規模データベース向けの新機能です。1つの表を複数のパーティションに分割することにより、巨大な表の管理や大量のデータ削除を容易に行うことができます。

 データ件数が数百万件に達するようなテーブルを考えてみましょう。このような巨大なテーブルから大量のデータを削除する場合、長い時間が必要となります。削除実行時は、データだけではなくインデックスの削除なども行われ、さらにトランザクションログへの書き込み、排他ロックの発生などによって時間がかかってしまいます。また、データ量の多さからバックアップやインデックスの再構築など、メンテナンスにも多くの時間を要することになります。

 このような大規模データベース特有の問題に対処するために実装されたのがデータパーティショニングです。データパーティショニングは、データの範囲によってデータの格納場所を水平分割できます。売り上げデータを扱うようなテーブルの場合、年月ごとに分割する、といった形です。

 このように分割することにより、特定範囲のデータを一括削除するといった処理を容易に、かつテーブル全体に影響を与えることなく行うことができます。また、パーティションごとにバックアップやインデックス再構築などのメンテナンスを行うことも可能です(図1)。

図1 データパーティショニングの概念 図1 データパーティショニングの概念

 データパーティショニングのメリットは、データやインデックスのメンテナンス性にとどまりません。パーティションごとにファイルグループを割り当てることにより、一部のデータファイルに障害が発生しても、そのほかのデータファイルを利用する限りはサービスを継続できます。障害が発生したデータファイルへの問い合わせや更新、削除などを行うことはできませんが、対象のデータファイルを復旧させることによって、サービスの全体的な稼働を回復できます(図2)。

図2 データパーティショニングによる可用性向上
データファイルに障害が発生しても、そのほかのファイルへのアクセスは維持される。

データパーティショニングの構築手順

 データパーティショニングは次のような手順で構築を行います。データパーティショニングはテーブルおよびインデックスの分割が可能ですが、ここではテーブルの分割を前提として手順を書きます。

1.パーティション関数の作成

 テーブルの分割方法を定義したパーティション関数を作成します。パーティション関数では、分割を行う列、値の範囲などを指定します。前述の売り上げテーブルを分割する場合、売り上げ日を分割列に指定し、値範囲を月ごとに、といった具合です。指定できる分割列は1つまでですが、1つのテーブルを最大1000個のパーティションに分割できます。

 パーティション関数を作成する際は「CREATE PARTITION FUNCTION」を利用します。

2.パーティション構成(パーティションスキーマ)の作成

 パーティション関数で作成したパーティションをファイルグループに関連付けるため、パーティション構成を作成します。パーティション構成では、パーティションごとにファイルグループを割り当てる、あるいは複数のパーティションを1つのファイルグループに指定する、といった指定が可能です。

 パーティション構成を作成する際は「CREATE PARTITION FUNCTION」を利用します。

3.パーティションテーブルの作成

 テーブル作成時に、利用するパーティション構成と、分割する列の指定を行います。分割列のデータ型、長さなどはパーティション関数での指定と一致する必要があります。

 パーティションテーブルを作成する際は、「CREATE TABLE」を利用します。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。