SharePoint 2010 のデータベース メンテナンス を読んでいてそういえば、SQL Server 2012 でオンラインインデックス操作の機能強化があったなと思って調べてみました。
■SQL Server 2012 のオンラインインデックス操作の機能強化
SQL Server 2012 における新機能 の スケーラビリティとパフォーマンスに関する機能強化 (データベース エンジン) に記載があります。
オンライン インデックスの作成、再構築、および削除
varchar(max) 列、nvarchar(max) 列、および varbinary(max) 列が含まれているインデックスの作成、再構築、および削除をオンライン操作として実行できるようになりました。
今回は SQL Server 2008 R2 と SQL Server 2012 RC0 で比較をしてみます。
以下のテーブルを作成します。
CREATE TABLE dbo.Table_1 GO |
このテーブルに対してインデックスをオンラインで再構築してみます。
ALTER INDEX [PK_Table_1] ON [dbo].[Table_1] REBUILD WITH (ONLINE=ON) |
SQL Server 2008 R2 の場合は以下のエラーとなります。
SQL Server 2012 RC0 で同様の操作をしてみます。
SQL Server 2012 では LOB のオンラインインデックス操作に対しての機能強化が行われていますので実行することができました。
現時点の SQL Azure では LOB に対してのオンラインインデックス操作はできないようです。
SQL Server 2008 R2 までの LOB を含んだ場合のインデックス操作に関してはこちらの記事が参考になりそうです。
# 英語なのでほとんど読めていないのですが…。
Online Index Operations for indexes containing LOB columns
ここ数年、SQL Server は趣味で触っているぐらいになっているのでもっと勉強しないとなと思いました。