Azure Synapse Analytics の専用 SQL プール (以前の SQL DW) をアップグレードしてパフォーマンスを最適化する
専用 SQL プール (以前の SQL DW) を最新世代の Azure ハードウェアとストレージ アーキテクチャにアップグレードします。
アップグレードする理由
サポートされるリージョンの Azure portal で専用 SQL プール (以前の SQL DW) のコンピューティング最適化 Gen2 階層にシームレスにアップグレードできるようになりました。 セルフアップグレードがサポートされていないリージョンの場合は、サポートされているリージョンにアップグレードするか、またはそのリージョンでセルフアップグレードが利用できるようになるまで待つことができます。 今すぐアップグレードして、最新世代の Azure ハードウェアと、高パフォーマンス、高スケーラビリティ、無制限の列指向ストレージなどの拡張されたストレージ アーキテクチャを利用してください。
重要
このアップグレードは、サポートされているリージョンのコンピューティング最適化 Gen1 階層の専用 SQL プール (以前の SQL DW) に適用されます。
開始する前に
ご自分のリージョンで GEN1 から GEN2 への移行がサポートされているかどうかをチェックしてください。 自動移行の日付に注意してください。 自動化されたプロセスとの競合を避けるため、自動化されたプロセスの開始日より前に手動移行を計画します。
まだサポートされていないリージョンの場合は、リージョンが追加されるまで引き続きチェックするか、またはサポートされているリージョンに復元を使用してアップグレードしてください。
サポートされているリージョンの場合は、Azure portal でアップグレードします
以下のマッピングを使用して、コンピューティング最適化 Gen1 階層の現在のパフォーマンス レベルに基づいて、専用 SQL プール (以前の SQL DW) の推奨パフォーマンス レベルを選択します。
コンピューティング最適化 Gen1 階層 コンピューティング最適化 Gen2 階層 DW100 DW100c DW200 DW200c DW300 DW300c DW400 DW400c DW500 DW500c DW600 DW500c DW1000 DW1000c DW1200 DW1000c DW1500 DW1500c DW2000 DW2000c DW3000 DW3000c DW6000 DW6000c
Note
推奨されるパフォーマンス レベルは、直接変換ではありません。 たとえば、DW600 から DW500c に移行することをお勧めします。
サポートされているリージョンで Azure portal を使用してアップグレードする
- Azure portal による Gen1 から Gen2 への移行は永続的です。 Gen1 に戻るプロセスはありません。
- Gen2 に移行するには、専用 SQL プール (以前の SQL DW) が実行されている必要があります
開始する前に
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
- Azure portal にサインインします。
- 専用 SQL プール (以前の SQL DW) が実行されていることを確認してください。それを Gen2 に移行する必要があります
PowerShell アップグレード コマンド
アップグレードするコンピューティング最適化 Gen1 階層専用 SQL プール (以前の SQL DW) が一時停止されている場合は、専用 SQL プール (以前の SQL DW) を再開します。
数分間のダウンタイムに備えます。
コンピューティング最適化 Gen1 パフォーマンス レベルに対するすべてのコード参照を識別し、同等のコンピューティング最適化 Gen2 パフォーマンス レベルに変更します。 アップグレードする前にコード参照を更新する必要がある 2 つの例を以下に示します。
元の Gen1 PowerShell コマンド:
Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -DatabaseName "mySampleDataWarehouse" -ServerName "mynewserver-20171113" -RequestedServiceObjectiveName "DW300"
変更後:
Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -DatabaseName "mySampleDataWarehouse" -ServerName "mynewserver-20171113" -RequestedServiceObjectiveName "DW300c"
Note
-RequestedServiceObjectiveName "DW300" が -RequestedServiceObjectiveName "DW300c" に変更されています
元の Gen1 T-SQL コマンド:
ALTER DATABASE mySampleDataWarehouse MODIFY (SERVICE_OBJECTIVE = 'DW300') ;
変更後:
ALTER DATABASE mySampleDataWarehouse MODIFY (SERVICE_OBJECTIVE = 'DW300c') ;
Note
SERVICE_OBJECTIVE = 'DW300' が SERVICE_OBJECTIVE = 'DW300c' に変更されています
アップグレードを開始する
Azure portal でコンピューティング最適化 Gen1 専用 SQL プール (以前の SQL DW) に移動します。 アップグレードするコンピューティング最適化 Gen1 階層専用 SQL プール (以前の SQL DW) が一時停止されている場合は、専用 SQL プール を再開します。
[タスク] タブで [Gen2 にアップグレードします] カードを選択します。
Note
[タスク] タブに [Gen2 にアップグレードします] カードが表示されない場合は、お使いのサブスクリプションの種類が現在のリージョンで制限されています。 サポート チケットを提出し、サブスクリプションの承認を受けてください。
アップグレードの前に、ワークロードの実行が完了し、休止していることを確認します。 専用 SQL プール (以前の SQL DW) がコンピューティング最適化 Gen2 階層専用 SQL プール (以前のSQL DW) としてオンラインに戻るまで、数分間のダウンタイムが発生します。
[アップグレード] を選択します。
Azure portal で状態を確認してアップグレードを監視します。 "このデータ ウェアハウスを Gen2 にアップグレードしています" というメッセージ バナーが表示される可能性があります。
アップグレード プロセスの最初の手順では、すべてのセッションが強制終了されるスケール操作 ("アップグレード中 - オフライン") が実行され、接続が切断されます。
アップグレード プロセスの 2 番目の手順は、データの移行 ("アップグレード中 - オンライン") です。 データの移行は、少量のオンライン バックグラウンド プロセスです。 このプロセスでは、列指向のデータが、以前のストレージ アーキテクチャから、ローカル SSD キャッシュを使用して、新しいストレージ アーキテクチャにゆっくり移行されます。 この期間中、専用 SQL プール (以前の SQL DW) はクエリと読み込みのためにオンラインになります。 移行されたかどうかに関係なく、データをクエリに使用できます。 データの移行速度は、データ サイズ、パフォーマンス レベル、列ストア セグメントの数に応じて変化します。
オプションの推奨事項: スケーリング操作が完了すると、データ移行バックグラウンド プロセスの速度を上げることができます。 ALTER INDEX ...REBUILD を、大規模な SLO とリソース クラスにあるクエリ対象のすべてのプライマリ列ストア テーブルに対して実行して、データ移動を強制実行できます。 この操作はオフラインであり、他のクエリのパフォーマンスが低下したりブロックされたりしますが、テーブルの数とサイズによっては完了までに数時間かかることがある少量のバックグラウンド プロセスと比較すると、速く完了します。 ただし、完了した後は、高品質の行グループを含む新しい拡張ストレージ アーキテクチャのため、データの移行ははるかに速くなります。
Note
Alter Index rebuild はオフライン操作であり、再構築が完了するまでテーブルは使用できなくなります。
次のクエリでは、データの移行を短縮するために必要な ALTER INDEX ... REBUILD
コマンドが生成されます。
SELECT 'ALTER INDEX [' + idx.NAME + '] ON ['
+ Schema_name(tbl.schema_id) + '].['
+ Object_name(idx.object_id) + '] REBUILD ' + ( CASE
WHEN (
(SELECT Count(*)
FROM sys.partitions
part2
WHERE part2.index_id
= idx.index_id
AND
idx.object_id =
part2.object_id)
> 1 ) THEN
' PARTITION = '
+ Cast(part.partition_number AS NVARCHAR(256))
ELSE ''
END ) + '; SELECT ''[' +
idx.NAME + '] ON [' + Schema_name(tbl.schema_id) + '].[' +
Object_name(idx.object_id) + '] ' + (
CASE
WHEN ( (SELECT Count(*)
FROM sys.partitions
part2
WHERE
part2.index_id =
idx.index_id
AND idx.object_id
= part2.object_id) > 1 ) THEN
' PARTITION = '
+ Cast(part.partition_number AS NVARCHAR(256))
+ ' completed'';'
ELSE ' completed'';'
END )
FROM sys.indexes idx
INNER JOIN sys.tables tbl
ON idx.object_id = tbl.object_id
LEFT OUTER JOIN sys.partitions part
ON idx.index_id = part.index_id
AND idx.object_id = part.object_id
WHERE idx.type_desc = 'CLUSTERED COLUMNSTORE';
Azure portal で復元を使用して Azure の地理的リージョンからアップグレードする
Azure portal を使用してユーザー定義の復元ポイントを作成する
- Azure portal にサインインします。
- 復元ポイントを作成する専用 SQL プール (以前の SQL DW) に移動します。
- [概要] ページのツール バーで [+ 新しい復元ポイント] を選択します。
- 復元ポイントの名前を指定します。
Azure portal を使用してアクティブまたは一時停止中のデータベースを復元する
Azure portal にサインインします。
復元する元の専用 SQL プール (以前の SQL DW) に移動します。
[概要] セクションのツール バーで [復元] を選択します。
[自動復元ポイント] または [ユーザー定義の復元ポイント] を選択します。 ユーザー定義の復元ポイントの場合は、ユーザー定義の復元ポイントを選択するか、または新しいユーザー定義の復元ポイントを作成します。 サーバーの場合は、 [新規作成] を選択し、Gen2 でサポートされている地理的リージョンのサーバーを選択します。
PowerShell を使用して Azure 地理的リージョンから復元する
Note
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
データベースを復旧するには、Restore-AzSqlDatabase コマンドレットを使用します。
Note
Gen2 への geo リストアを行うことができます。 そのためには、省略可能なパラメーターとして Gen2 の ServiceObjectiveName (例: DW1000c) を指定します。
- Windows PowerShell を開きます。
- Azure アカウントに接続して、アカウントに関連付けられているすべてのサブスクリプションを一覧表示します。
- 復元するデータベースを含むサブスクリプションを選択します。
- 復旧するデータベースを取得します。
- Gen2 ServiceObjectiveName を指定して、データベースの復旧要求を作成します。
- geo リストアされたデータベースの状態を確認します。
Connect-AzAccount
Get-AzSubscription
Select-AzSubscription -SubscriptionName "<Subscription_name>"
# Get the database you want to recover
$GeoBackup = Get-AzSqlDatabaseGeoBackup -ResourceGroupName "<YourResourceGroupName>" -ServerName "<YourServerName>" -DatabaseName "<YourDatabaseName>"
# Recover database
$GeoRestoredDatabase = Restore-AzSqlDatabase –FromGeoBackup -ResourceGroupName "<YourResourceGroupName>" -ServerName "<YourTargetServer>" -TargetDatabaseName "<NewDatabaseName>" –ResourceId $GeoBackup.ResourceID -ServiceObjectiveName "<YourTargetServiceLevel>" -RequestedServiceObjectiveName "DW300c"
# Verify that the geo-restored database is online
$GeoRestoredDatabase.status
Note
復元が完了した後にデータベースを構成する方法については、「 復旧後のデータベースの構成」を参照してください。
ソース データベースの TDE が有効な場合、復旧したデータベースも TDE が有効になります。
専用 SQL プールで問題が発生した場合は、サポート リクエストを作成し、考えられる原因を "Gen2 アップグレード" としてください。
アップグレードされた専用 SQL プール (以前の SQL DW) はオンラインです。 強化されたアーキテクチャを利用するには、リソース クラスの詳細を参照してください。