Azure SQL。パフォーマンスを向上させるためにデータベースをスケールアウトする (読み取り専用)

Azure SQL。パフォーマンスを向上させるためにデータベースをスケールアウトする (読み取り専用)

非常に頻繁に使用されるデータベース(リクエストのほぼ 100% が選択)があり、データベースがボトルネックになっています。

私たちは、このデータベースを(水平に)スケールアウトし、複数のインスタンス間でリクエストを負荷分散できるソリューションを探していました。

理想的なシナリオでは、私たちが求めているのは、インスタンスを動的に追加および削除する方法です (Azure Web App のインスタンスをスケーリングする方法と同様の方法で)。

これまでのところ、私が見つけた最良の解決策は、「読み取り専用レプリカを使用した読み取りスケールアウト」です。https://docs.microsoft.com/ja-jp/azure/azure-sql/database/read-scale-out を参照してください。これは完璧な解決策のように見えますが、唯一の問題は、そこにさらにレプリカを追加する方法がわからないことです。

答え1

RDBMS は通常、何らかの方法でデータを分割せずに水平方向にスケールアウトすることはできません。また、RDBMS 内のデータは正規化する必要がありますが、これはすべてのデータ セットに適しているわけではありません。

もう一つ注意すべき点は、動的スケーラビリティは自動スケールとは異なるということです。自動スケールは、基準に基づいてサービスが自動的にスケールされるのに対し、動的スケーラビリティでは、ダウンタイムを最小限に抑えながら手動でスケールできます。

一つの解決策としては、単一の SQL データベースを監視および拡張するための PowerShell スクリプト

Cosmos DB への移行も解決策になるかもしれません。

関連情報