パーティション テーブルとパーティション インデックスに関するプランニング ガイドライン

テーブルまたはインデックスをパーティション分割する前に、次のデータベース オブジェクトの作成プランを立てる必要があります。

  • パーティション関数

  • パーティション構成

パーティション関数では、テーブルまたはインデックスの行を、パーティション分割列と呼ばれる特定の列の値に基づいて、一連のパーティションにマップする方法を定義します。

パーティション構成により、パーティション関数で指定された各パーティションがファイル グループにマップされます。

パーティション関数のプランニング

パーティション関数のプランを立てるときに考慮すべき 2 つの要素があります。それは、パーティション分割列と呼ばれる、テーブルのパーティション分割方法を決定する値が格納された列と、パーティションごとのパーティション分割列の値の範囲です。この値の範囲により、テーブルを構成するパーティションの数が決まります。1 つのテーブルは、最大 1,000 個のパーティションに分割できます。

パーティション分割列とその値の範囲の選択肢は、主に、日付などの論理的にデータをグループ化できるエクステントと、この論理的なグループ化がデータのサブセットを管理するのに適切であるかどうかによって決まります。

たとえば、AdventureWorks2008R2 サンプル データベースのパーティション分割シナリオでは、TransactionHistory テーブルと TransactionHistoryArchive テーブルが TransactionDate フィールドでパーティション分割されます。パーティションごとの値の範囲は 1 か月です。TransactionHistoryArchive テーブルでは古いトランザクションが保持されますが、TransactionHistory テーブルではその年の最新のトランザクションが保持されます。この方法でテーブルをパーティション分割することにより、1 か月分の古いデータを、1 か月ごとに TransactionHistory から TransactionHistoryArchive にすばやく効率的に転送できます。

この特定のシナリオの詳細については、「データのサブセットを管理するためのパーティションの設計」を参照してください。

データ型をインデックス キーとして使用できる列は、パーティション分割列としても指定できます。ただし、timestamp データ型、Microsoft .NET Framework 共通言語ランタイム (CLR) ユーザー定義データ型、および別名データ型は除きます。詳細については、「パーティション テーブルとパーティション インデックスの作成」を参照してください。

パーティション構成のプランニング

パーティション構成のプランニングでは、パーティションを配置するファイル グループを決定する必要があります。パーティションを別々のファイル グループに配置する主な理由は、パーティションのバックアップ操作を個別に実行できるようにすることです。これは、バックアップを個別のファイル グループで実行できるからです。詳細については、「SQL Server でのデータベースのバックアップおよび復元」を参照してください。

重要な注意事項重要

SQL Server では、テーブルのいずれかのファイル グループに ONLINE 状態ではないファイルが含まれている場合、パーティション テーブルにアクセスするクエリが完了するかどうかは保証されません。これは、クエリがどのパーティションにアクセスする場合でも同様です。

このシナリオを実装する Transact-SQL スクリプトについては、ReadMe_SlidingWindow および Readme_PartitioningScript の各サンプルを参照してください。サンプルの詳細については、「SQL Server のサンプルとサンプル データベースのインストールに関する注意点」を参照してください。