制限事項と運用シナリオ
カラムストアインデックスを作成すると、対象となったテーブルのデータを更新することができなくなります。この点だけに着目してしまうと、これまでの SQL Server に定義していた一般的なインデックスの考え方とは一線を画すため驚いてしまうかもしれませんね。この特徴を理解したうえで、適切な運用方法を計画することで、大量の IO を必要とする操作の大幅なパフォーマンス向上が期待できます。
それでは、カラムストアインデックスを作成したテーブルのデータを更新するための運用シナリオを考えてみます。代表的な例としては次の 2 つのシナリオが挙げられます。このような処理を必要に応じて定期的に実行することによって、カラムストアインデックスを作成したテーブルに対しても、データの変更を継続的に反映していくことができます。
1. カラムストアインデックスの無効化
一旦カラムストアインデックスを無効化 (または削除) してからデータの更新を実施します。その後、再度カラムストアインデックスを作成します。
手順 1 ALTER INDEX インデックス名 ON テーブル名 DISABLE
手順 2 データの更新
手順 3 ALTER INDEX インデックス名 ON テーブル名 REBUILD
2. パーティションの使用
カラムストアインデックスがあってもパーティションの操作はできるため、データの追加にパーティションを使用します。
手順 1 データ追加に使用するステージングテーブルにデータをロード
手順 2 CREATE NONCLUSTERED COLUMNSTORE INDEX
– ステージングテーブルにカラムストアインデックスを作成
手順 3 追加が必要になった時にパーティションをスイッチ
ALTER TABLE テーブル名 SWITCH TO T PARTITION …