web-dev-qa-db-ja.com

SQL Server 2017 EnterpriseとStandard-オンラインインデックス作成とオンラインスキーマの変更

Microsoftの " SQL Server 2017のエディションとサポートされている機能 "ドキュメントを読んで、EnterpriseエディションとStandardエディションの機能の違いを比較します。

スタンダードで利用できなかった2つのことは、私の目を引きました。

  1. オンラインインデックス

  2. オンラインスキーマの変更

これは文字通り、最初にデータベースをオフラインにしないとインデックスやテーブル(およびその他のオブジェクト)を作成および変更できないことを意味しますか、それともMicrosoftは実行できない特定の操作しかありません。データベースをオフラインにする必要がある操作はどれですか。

4
J.D.

混乱は言葉遣いにあるようです-オンライン/オフラインはこの文脈ではちょっと混乱しています。

オブジェクトの状態がオンラインであるかオフラインであるかではなく、実行中の操作(インデックスの再作成またはテーブルの変更)がオンラインで実行されるかどうかを示します。オンラインとは、オブジェクトに排他ロックがなく、結果として他のクエリ/操作にアクセスできることを意味します。オフラインとは、操作によってロックされており、他のクエリが何の影響も受けないことを意味します。

Enterpriseの利点は、スキーマの変更やインデックスのメンテナンスを実行でき、実行中の他のクエリに(潜在的に)悪影響を与えないことです。これは、other、制限が緩い、ロックが取得されない(行レベル、ページレベル)という意味ではありませんが、私はmオブジェクトから完全にボックス化されていません。ただし、他の多くの要因がこれに影響するため、物事が同じように実行し続けることは保証されません。実行したい個々のコマンドをチェックして、ロック動作に影響を与える可能性のある無数のオプションを確認してください。

たとえば、オンラインインデックスの再編成が効果的に他のすべてのSELECTステートメントからテーブルをロックして、それが使用していたMAXDOPを調整するまで、テーブル全体を実際にロックしているわけではありませんが。

データベースは可能ですが(ただし、このトピックには関係ありません)、オブジェクトをオンラインまたはオフラインにすることはできません。

リソース:

9
LowlyDBA

いいえ、テーブルを変更したりインデックスを作成したりする前に、データベースをオフラインにしたり、オブジェクトをオフライン(方法)にしたりする必要はありません。

標準バージョンでは、SQL Serverは、インデックスの作成またはテーブルの変更が完了するまで、オブジェクト(つまり、テーブル)をロックします。

Enterprise Editionを使用している場合は、WITH (ONLINE=ON)オプションを指定してテーブルを変更したり、インデックスを作成したりできるため、インデックスの作成操作の実行中でもオブジェクトにアクセス(SELECT)できます。これは、大きなオブジェクトがある場合、またはメンテナンスウィンドウがない場合に非常に役立ちます。

5