

# Babelfish でのパーティショニングについて
<a name="babelfish-partition"></a>

バージョン 4.3.0 以降、Babelfish はサポートが制限されたテーブルとインデックスのパーティショニングを導入しました。以下のセクションでは、パーティション関数の作成、パーティションスキームの定義、Babelfish でのパーティションテーブルとインデックスの実装について詳しく説明します。

**Topics**
+ [Babelfish でのパーティショニングの紹介](#babelfish-partition-function-views)
+ [制限と回避策](#babelfish-partition-limitations)

## Babelfish でのパーティショニングの紹介
<a name="babelfish-partition-function-views"></a>
+ **パーティション関数:**
  + `CREATE PARTITION FUNCTION:` パーティション分割列タイプと各パーティションの値の範囲を指定して、テーブルまたはインデックスをパーティション分割する方法を定義します。
  + `DROP PARTITION FUNCTION:` 既存のパーティション関数を削除します。
+ **パーティションスキーム:**
  + `CREATE PARTITION SCHEME:` パーティションとファイルグループ間のマッピングを定義します。
**注記**  
Babelfish では、ファイルグループはダミーオブジェクトとして扱われ、物理的なストレージの場所を表すものではありません。
  + `DROP PARTITION SCHEME:` 既存のパーティションスキームを削除します。
+ **システム関数:**
  + `$PARTITION:` このシステム関数は、パーティショニング列内の指定された値が、指定されたパーティションテーブルに属するパーティション番号を返します。
+ **パーティションテーブルとインデックス:**
  + `CREATE TABLE ... ON partition_scheme_name (partition_column_name):` 指定されたパーティションスキームとパーティション列に基づいてパーティションテーブルを作成します。
  + `CREATE INDEX ... ON partition_scheme_name (partition_column_name):` 指定されたパーティションスキームとパーティション列に基づいてパーティションインデックスを作成します。
+ **メタデータをパーティショニングするためのシステムビュー:**

  パーティショニングに関連するメタデータを提供するために、次のシステムビューが追加されました。
  + `sys.destination_data_spaces`
  + `sys.partitions`
  + `sys.partition_functions`
  + `sys.partition_parameters`
  + `sys.partition_range_values`
  + `sys.partition_schemes`

## 制限と回避策
<a name="babelfish-partition-limitations"></a>

次の SQL Server パーティショニング機能は、Babelfish ではまだサポートされていません。
+ `ALTER PARTITION FUNCTION` および `ALTER PARTITION SCHEME`。
**注記**  
Babelfish は、分割オペレーションとマージオペレーションをサポートしていません。パーティションを後から追加または削除することはできないため、作成時にパーティション関数ですべてのパーティションを定義してください。
+ パーティショニング列としての計算列。
+ パーティションテーブルに対する `INSERT BULK` および `BCP` ユーティリティ。
+ パーティション関数の `LEFT` 境界オプション。
+ パーティション関数の `SQL_VARIANT` データ型。
+ `TRUNCATE TABLE ... WITH PARTITION`.
+ `ALTER TABLE ... SWITCH PARTITION`.
+ パーティションスキームやパーティションテーブルとは異なるパーティション列など、整列されていないパーティションインデックス。
+ Babelfish ソースからの DMS 移行は、パーティションテーブルのフルロードタスクでのみサポートされます。
+ パーティション関数での照合の使用。
+ デフォルトのデータベース照合以外の照合におけるパーティショニング列の使用。
+ Babelfish は次の構文オプションをサポートしていませんが、回避策があります。
  + CREATE TABLE ステートメントでの制約またはインデックスを含むパーティションスキームの使用。
  + ALTER TABLE ... ADD CONSTRAINT ... ON partition\_scheme\_name (partition\_column\_name)。
**注記**  
`babelfishpg_tsql.escape_hatch_storage_on_partition` エスケープハッチは無視するように設定できます。これにより、パーサーは制約またはインデックスで使用されるパーティションスキームオプションを無視でき、バックエンドは各パーティションに個別の制約またはインデックスを作成します。