41

データベース バックエンドに Azure SQL を使用するアプリケーションがあります。通常の負荷/条件下では、このデータベースは Premium 1 プランで正常に実行できます。ただし、早朝の時間帯には、データベースの負荷を増加させるジョブが実行されます。この数時間の間に、Premium 3 プランに移行する必要があります。プレミアム 3 のコストは約 8 倍なので、このプランを 24 時間年中無休で実行するコストを支払いたくないのは明らかです。

データベースを自動スケールアップおよびダウンすることは可能ですか? クラウド サービスは、Azure ポータルのインスタンス数を簡単にスケーリングする方法を提供しますが、Azure SQL データベースにはこのようなものはありません。これは、Azure SDK を使用してプログラムで実行できますか? この件に関するドキュメントは見つかりませんでした。

4

4 に答える 4

19

@ErikEJ の回答 (ありがとう!) の記事を掘り下げた後、Elastic Sc​​ale プレビューのリリースで新たに公開されたように見える以下を見つけることができました。

データベース サービス層とパフォーマンス レベルの変更

次の REST API も新たに利用できるようになりました。これらを使用すると、データベースに対してほとんど何でも実行できます。

Azure SQL データベースの REST API 操作

そして、サービス層のスケーリングに関する最初の質問 (例: P1 -> P3 -> P1) について:

データベース REST API の更新

これらの新しい開発により、クラウド サービスと同様に、自動スケーリングが Azure Portal で簡単な構成として利用できるようになるのも時間の問題であると想定しています。

于 2014-11-06T18:23:03.887 に答える
13

これを行う別の方法は、Azure 自動化を使用し、以下のラン ブックを使用することです。

param
(
    # Desired Azure SQL Database edition {Basic, Standard, Premium}
    [parameter(Mandatory=$true)] 
    [string] $Edition,

    # Desired performance level {Basic, S0, S1, S2, P1, P2, P3}
    [parameter(Mandatory=$true)] 
    [string] $PerfLevel

)

inlinescript
{
    # I only care about 1 DB so, I put it into variable asset and access from here
    $SqlServerName = Get-AutomationVariable -Name 'SqlServerName'
    $DatabaseName = Get-AutomationVariable -Name 'DatabaseName'


    Write-Output "Begin vertical scaling script..."

    # Establish credentials for Azure SQL Database server 
    $Servercredential = new-object System.Management.Automation.PSCredential("yourDBadmin", ("YourPassword" | ConvertTo-SecureString -asPlainText -Force)) 

    # Create connection context for Azure SQL Database server
    $CTX = New-AzureSqlDatabaseServerContext -ManageUrl “https://$SqlServerName.database.windows.net” -Credential $ServerCredential

    # Get Azure SQL Database context
    $Db = Get-AzureSqlDatabase $CTX –DatabaseName $DatabaseName

    # Specify the specific performance level for the target $DatabaseName
    $ServiceObjective = Get-AzureSqlDatabaseServiceObjective $CTX -ServiceObjectiveName "$Using:PerfLevel"

    # Set the new edition/performance level
    Set-AzureSqlDatabase $CTX –Database $Db –ServiceObjective $ServiceObjective –Edition $Using:Edition -Force

    # Output final status message
    Write-Output "Scaled the performance level of $DatabaseName to $Using:Edition - $Using:PerfLevel"
    Write-Output "Completed vertical scale"
}


参考:
Azure Vertically Scale Runbook
スケールアップ/ダウンしたい時のスケジュール設定。
私にとっては、入力パラメーターで 2 つのスケジュールを使用しました。1 つはスケールアップ用、もう 1 つはスケールダウン用です。
その助けを願っています。

于 2015-10-01T07:22:20.467 に答える
12

はい、その機能は利用可能です: Azure SQL Database Elastic Sc​​ale

https://docs.microsoft.com/en-gb/azure/sql-database/sql-database-elastic-scale-introduction

于 2014-11-06T14:54:14.303 に答える
10

場合によっては、 msdn で説明されているように SQL クエリを実行するのが最も簡単なオプションです。

例えば:

ALTER DATABASE [database_name] MODIFY (EDITION = 'standard', SERVICE_OBJECTIVE = 'S3', MAXSIZE = 250 GB)
于 2016-07-06T10:25:59.660 に答える