ALTER DATABASE (Transact-SQL) - Analytics Platform System (PDW)

適用対象:Analytics Platform System (PDW)

Analytics Platform System(PDW)では、 ALTER DATABASE 複製テーブル、分散テーブル、トランザクションログの最大データベースサイズオプションを変更します。 このステートメントを使用すると、サイズの増加または減少に合わせてデータベースのディスク領域割り当てを管理できます。 この記事では、Analytics Platform System (PDW) でのデータベース オプションの設定に関連する構文についても説明します。

Transact-SQL 構文表記規則

Syntax

-- Analytics Platform System
ALTER DATABASE database_name
    SET ( <set_database_options> | <db_encryption_option> )
[;]

<set_database_options> ::=
{
    AUTOGROW = { ON | OFF }
    | REPLICATED_SIZE = size [GB]
    | DISTRIBUTED_SIZE = size [GB]
    | LOG_SIZE = size [GB]
    | SET AUTO_CREATE_STATISTICS { ON | OFF }
    | SET AUTO_UPDATE_STATISTICS { ON | OFF }
    | SET AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<db_encryption_option> ::=
    ENCRYPTION { ON | OFF }

Arguments

database_name

変更するデータベースの名前。 アプライアンス上でデータベースの一覧を表示するには、sys.databases を使用します。

AUTOGROW = { ON |OFF }

AUTOGROW オプションを更新します。 AUTOGROW が ON のとき、Analytics Platform System (PDW) は、複製テーブル、分散テーブル、トランザクション ログの割り当て領域を必要に応じて自動的に増やし、記憶域要件の増加に対応します。 AUTOGROW が OFF のとき、Analytics Platform System (PDW) は、複製テーブル、分散テーブル、トランザクション ログが最大サイズ設定を超過したときにエラーを返します。

REPLICATED_SIZE = サイズ [GB]

変更されているデータベースのすべての複製テーブルを格納するための新しい最大 GB を計算ノードごとに指定します。 アプライアンスの記憶域スペースを計画している場合は、REPLICATED_SIZEにアプライアンス内のコンピューティング ノードの数を乗算する必要があります。

DISTRIBUTED_SIZE = サイズ [GB]

変更されているデータベースのすべての分散テーブルを格納するための新しい最大 GB をデータベースごとに指定します。 このサイズは、アプライアンスの計算ノード全体で分散されます。

LOG_SIZE = サイズ [GB]

変更されているデータベースのすべてのトランザクション ログを格納するための新しい最大 GB をデータベースごとに指定します。 このサイズは、アプライアンスの計算ノード全体で分散されます。

ENCRYPTION { ON |OFF }

データベースを暗号化する (ON) か、暗号化しない (OFF) かを設定します。 Analytics Platform System (PDW) の暗号化は、sp_pdw_database_encryption が 1 に設定されているときにのみ構成できます。 Transparent Data Encryption を構成するには、先にデータベース暗号化キーを作成する必要があります。 データベース暗号化の詳細については、「 Transparent データ暗号化 (TDE)」を参照してください。

SET AUTO_CREATE_STATISTICS { オン |停止}

統計の自動作成オプション (AUTO_CREATE_STATISTICS) が ON の場合、クエリ オプティマイザーは、クエリ プランのカーディナリティ推定を向上させるために、必要に応じてクエリ述語内の個々の列に対して統計を作成します。 これらの単一列統計は、既存の統計オブジェクトにまだヒストグラムがない列に対して作成されます。

AU7 へのアップグレード後に作成された新しいデータベースの場合、既定値は ON です。 アップグレードの前に作成されたデータベースの場合、既定値は OFF です。

統計の詳細については、「統計」を参照してください。

SET AUTO_UPDATE_STATISTICS { オン |停止}

統計の自動更新オプション (AUTO_UPDATE_STATISTICS) が ON の場合、クエリ オプティマイザーは統計が古くなっている可能性があるタイミングを判断し、クエリで使用されるときに更新します。 操作の挿入、更新、削除、またはマージによってテーブルまたはインデックス付きビューのデータ分布が変更された後、統計は古くなります。 クエリ オプティマイザーは、前回の統計の更新以降のデータ変更の数をカウントし、変更の数をしきい値と比較することで、統計が古くなっている可能性があるタイミングを判断します。 しきい値は、テーブルまたはインデックス付きビューの行数に基づいています。

AU7 へのアップグレード後に作成された新しいデータベースの場合、既定値は ON です。 アップグレードの前に作成されたデータベースの場合、既定値は OFF です。

統計の詳細については、「統計」を参照してください。

SET AUTO_UPDATE_STATISTICS_ASYNC { オン |停止}

非同期統計更新オプション (AUTO_UPDATE_STATISTICS_ASYNC) は、クエリ オプティマイザーが同期統計更新と非同期統計更新のどちらを使用するかを決定します。 AUTO_UPDATE_STATISTICS_ASYNC オプションは、インデックスに対して作成された統計オブジェクト、クエリ述語内の列に対して 1 列ずつ作成された統計オブジェクト、および CREATE STATISTICS ステートメントを使用して作成された統計に適用されます。

AU7 へのアップグレード後に作成された新しいデータベースの場合、既定値は ON です。 アップグレードの前に作成されたデータベースの場合、既定値は OFF です。

統計の詳細については、「統計」を参照してください。

Permissions

データベースに対する ALTER 権限が必要です。

エラー メッセージ

自動統計が無効になっている場合に、統計の設定を変更しようとすると、This option isn't supported in PDW というエラーが PDW から出力されます。 システム管理者は、機能スイッチ AutoStatsEnabled を有効にすることにより、自動統計を有効にすることができます。

注釈

REPLICATED_SIZE、DISTRIBUTED_SIZE、LOG_SIZE は、データベースの現在の値と同じ値か、それより大きい値か、それより小さい値に設定できます。

Limitations

増加と縮小はおおよそで行われます。 結果的に与えられる実際のサイズはサイズ パラメーターとは異なる場合があります。

Analytics Platform System (PDW) は、 ALTER DATABASE ステートメントをアトミック操作として実行しません。 実行中、ステートメントが中止された場合、既に発生している変更はそのまま残ります。

統計設定は、管理者が自動統計を有効にしている場合にのみ機能します。管理者の場合は、機能スイッチ AutoStatsEnabled を使用して自動統計を有効または無効にします。

ロック動作

DATABASE オブジェクトを共有ロックします。 別のユーザーが読み取りまたは書き込みに使用しているデータベースを変更することはできません。 データベースで USE ステートメントを発行しているセッションもこれに該当します。

Performance

データベース内の実際のデータ サイズとディスクの断片化の量によっては、データベースの縮小に多大な時間とシステム リソースが必要となります。 たとえば、データベースの縮小に数時間かかることがあります。

暗号化の進行状況を確認する

次のクエリを使用すると、データベースの Transparent Data Encryption の進捗状況を割合で見ることができます。

WITH
database_dek AS (
    SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id,
        dek.encryption_state, dek.percent_complete,
        dek.key_algorithm, dek.key_length, dek.encryptor_thumbprint,
        type
    FROM sys.dm_pdw_nodes_database_encryption_keys AS dek
    INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map
        ON dek.database_id = node_db_map.database_id
        AND dek.pdw_node_id = node_db_map.pdw_node_id
    LEFT JOIN sys.pdw_database_mappings AS db_map
        ON node_db_map .physical_name = db_map.physical_name
    INNER JOIN sys.dm_pdw_nodes nodes
        ON nodes.pdw_node_id = dek.pdw_node_id
    WHERE dek.encryptor_thumbprint <> 0x
),
dek_percent_complete AS (
    SELECT database_dek.database_id, AVG(database_dek.percent_complete) AS percent_complete
    FROM database_dek
    WHERE type = 'COMPUTE'
    GROUP BY database_dek.database_id
)
SELECT DB_NAME( database_dek.database_id ) AS name,
    database_dek.database_id,
    ISNULL(
       (SELECT TOP 1 dek_encryption_state.encryption_state
        FROM database_dek AS dek_encryption_state
        WHERE dek_encryption_state.database_id = database_dek.database_id
        ORDER BY (CASE encryption_state
            WHEN 3 THEN -1
            ELSE encryption_state
            END) DESC), 0)
        AS encryption_state,
dek_percent_complete.percent_complete,
database_dek.key_algorithm, database_dek.key_length, database_dek.encryptor_thumbprint
FROM database_dek
INNER JOIN dek_percent_complete
    ON dek_percent_complete.database_id = database_dek.database_id
WHERE type = 'CONTROL';

TDE の実装のすべての手順を示す包括的な例については、「 Transparent data encryption (TDE)」を参照してください。

例: Analytics Platform System (PDW)

A。 AUTOGROW の設定を変更する

データベース CustomerSales の AUTOGROW を ON に設定します。

ALTER DATABASE CustomerSales
    SET ( AUTOGROW = ON );

B. 複製テーブルの最大記憶域を変更する

次の例では、データベース CustomerSales の複製テーブルの記憶域上限を 1 GB に設定します。 これは計算ノードごとの記憶域上限になります。

ALTER DATABASE CustomerSales
    SET ( REPLICATED_SIZE = 1 GB );

C. 分散テーブルの最大記憶域を変更する

次の例では、データベース CustomerSalesの分散テーブルストレージの制限を 1,000 GB (1 テラバイト) に設定します。 これは、計算ノードごとの記憶域上限ではなく、アプライアンス全体の全計算ノードの記憶域上限を 1 つにしたものになります。

ALTER DATABASE CustomerSales
    SET ( DISTRIBUTED_SIZE = 1000 GB );

D. トランザクション ログの最大記憶域を変更する

次の例では、データベース CustomerSales を更新し、アプライアンスの SQL Server トランザクション ログの最大サイズを 10 GB にします。

ALTER DATABASE CustomerSales
    SET ( LOG_SIZE = 10 GB );

E. 現在の統計値を確認する

次のクエリを実行すると、すべてのデータベースについて現在の統計値が返されます。 値が 1 の場合は機能がオンであることを意味し、値が 0 の場合は機能がオフであることを意味します。

SELECT [name],
    is_auto_create_stats_on,
    is_auto_update_stats_on,
    is_auto_update_stats_async_on
FROM sys.databases;

F. データベースに対して統計の自動作成および自動更新を有効にする

次のステートメントを使用して、データベース CustomerSales について自動的かつ非同期的に統計を作成および更新する機能を有効にします。 これにより、高品質のクエリ プランを作成するために必要に応じて単一列統計が作成および更新されます。

ALTER DATABASE CustomerSales
    SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE CustomerSales
    SET AUTO_UPDATE_STATISTICS ON;
ALTER DATABASE
    SET AUTO_UPDATE_STATISTICS_ASYNC ON;