SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2012 のオンラインインデックス操作の機能強化について

leave a comment

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
    (
    Col1 uniqueidentifier NOT NULL,
    Col2 nvarchar(MAX) NULL
    )  ON [PRIMARY]
     TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.Table_1 ADD CONSTRAINT
    PK_Table_1 PRIMARY KEY CLUSTERED
    (
    Col1
    )  ON [PRIMARY]

GO

 

このテーブルに対してインデックスをオンラインで再構築してみます。

ALTER INDEX [PK_Table_1] ON [dbo].[Table_1] REBUILD WITH (ONLINE=ON)

SQL Server 2008 R2 の場合は以下のエラーとなります。
image

SQL Server 2012 RC0 で同様の操作をしてみます。
image

SQL Server 2012 では LOB のオンラインインデックス操作に対しての機能強化が行われていますので実行することができました。

現時点の SQL Azure では LOB に対してのオンラインインデックス操作はできないようです。
image

SQL Server 2008 R2 までの LOB を含んだ場合のインデックス操作に関してはこちらの記事が参考になりそうです。
# 英語なのでほとんど読めていないのですが…。
Online Index Operations for indexes containing LOB columns

ここ数年、SQL Server は趣味で触っているぐらいになっているのでもっと勉強しないとなと思いました。

Share

Written by Masayuki.Ozawa

1月 12th, 2012 at 8:37 pm

Posted in SQL Server

Tagged with ,

Leave a Reply