先日リリースされた SQL Server 2014 SP2 ですが、詳細については SQL Server 2014 Service Pack 2 is now Available !!! で記載されているのですが、その中で新しい DBCC コマンドである「DBCC CLONEDATABASE」が追加されているので確認してみました。
詳細については、以下から確認することができます。
DBCC CLONEDATABASE を使用して SQL Server 2014 SP2 のユーザー データベースのスキーマとの統計情報のみコピーを生成する方法
この機能は、現状、SQL Server 2016 でも実装されていないようで、2016 で実行できるようになるのは、今後の累積修正プログラム / サービスパック待ちになりそうですね。
今回追加された DBCC コマンドは「クローンデータベース」を作成するものになるのですが、クローンデータベースについては、今回追加された概念ではなく、以前から使われていたのもになります。
SQL Server で統計情報専用のデータベースを作成するために必要なデータベース メタデータのスクリプトを生成する方法
従来までは、データベースの作成スクリプトを統計情報を含めた形でクローンデータベースを作成していました。
これが、DBCC コマンドで作成できるようになったのが今回の更新となります。
クローンデータベースは、データベース内のオブジェクトと、統計情報が含まれており、データについては含まれていないものとなります。
# 一部、含まれないオブジェクトがありますので、その辺は意識しておく必要があります。
データは含まれておらず、スキーマのみのデータベースですので、軽量なデータベースとなるため作成をしてもディスクの消費は最小限に抑えることができます。
# データベースはデータ / ログファイルのデフォルトの場所に作成がされます。
クローンデータベースの作成は、以下のようなコマンドで実施することができます。
クローンデータベースは、クローン元のデータベースが存在しているサーバーでのみ取得が可能ですので、本番のクローンデータベースを作成したい場合には、本番環境で実行する必要があります。
DBCC CLONEDATABASE(AdventureWorks2014, AWCloneDB)
'AdventureWorks2014' のデータベースの複製が 'AWCloneDB' をターゲットにして開始されました。 'AdventureWorks2014' のデータベースの複製が完了しました。複製されたデータベースは 'AWCloneDB' です。 データベース 'AWCloneDB' は複製されたデータベースです。複製されたデータベースは診断目的にのみ使用するもので、運用環境での使用はサポートされていません。 DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
クローンデータベースのクローン先は読み取り専用データベースとして作成が行われます。
これは不要な統計情報の更新等を実施されないためかと思います。
クローンデータベースでは sys.partitions の情報も取得できるようですので、データの件数の概算もわかるようですね。
実データは含まれていないのですが、統計情報は含まれているので、統計を見ることで一部データが見れてるということは意識しておくとよいかと。
# データがまったく含まれないという言い方で取得を行うと語弊がありますので。
クローンデータベースには、統計情報が含まれていますので、クローンデータベース上で推定実行プランを使用したクエリのチューニング等を効率よく実施することができます。
また、クローンデータベースはデータベースですので、バックアップを取得し、それを他のインスタンスに復元して調査するということも可能です。
問題解決を他のインスタンスで実施する際の DB の複製を行う場合、この方法を使用すると効率よさそうですね。