.png)
非常に頻繁に使用されるデータベース(リクエストのほぼ 100% が選択)があり、データベースがボトルネックになっています。
私たちは、このデータベースを(水平に)スケールアウトし、複数のインスタンス間でリクエストを負荷分散できるソリューションを探していました。
理想的なシナリオでは、私たちが求めているのは、インスタンスを動的に追加および削除する方法です (Azure Web App のインスタンスをスケーリングする方法と同様の方法で)。
これまでのところ、私が見つけた最良の解決策は、「読み取り専用レプリカを使用した読み取りスケールアウト」です。https://docs.microsoft.com/ja-jp/azure/azure-sql/database/read-scale-out を参照してください。これは完璧な解決策のように見えますが、唯一の問題は、そこにさらにレプリカを追加する方法がわからないことです。
答え1
RDBMS は通常、何らかの方法でデータを分割せずに水平方向にスケールアウトすることはできません。また、RDBMS 内のデータは正規化する必要がありますが、これはすべてのデータ セットに適しているわけではありません。
もう一つ注意すべき点は、動的スケーラビリティは自動スケールとは異なるということです。自動スケールは、基準に基づいてサービスが自動的にスケールされるのに対し、動的スケーラビリティでは、ダウンタイムを最小限に抑えながら手動でスケールできます。
一つの解決策としては、単一の SQL データベースを監視および拡張するための PowerShell スクリプト
Cosmos DB への移行も解決策になるかもしれません。