Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

Azure SQL Database のリソース消費に最も大きな影響を与える要因のひとつが、アプリケーション層による繰り返しのデータ取得です。クエリ自体がどれほど高速に実行されていても、同じストアドプロシージャや同じ SQL ステートメントを1日に数百回、数千回、ときには数百万回も発行すれば、データベースのパフォーマンスに深刻な悪影響を及ぼします。いわゆる「デス・バイ・サウザンド・カッツ(千の一刀傷)」のように、小さな負荷の積み重ねがシステム全体を麻痺させることも珍しくありません。

こうした問題は DBA にとってトラブルシューティングが難しい場合があります。ステートメントの実行があまりに短時間で完了するため、sp_whoisactive のようなツール上にも表示されないことがあるからです。Query Performance InsightsQuery Store を詳しく調査して初めて、本当の原因が見えてくるのです。

Azure Portal での確認

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

SSMS Query Store(実行回数メトリック付きの上位クエリ)

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

では、この問題にどう対処すればよいのでしょうか。コードはすでに十分にチューニングされ、最適なパフォーマンスを発揮しているのに、問題を引き起こしているのはアプリケーションからの呼び出し回数の多さだけ――そんなケースも少なくありません。その有効な答えのひとつが Azure Cache for Redis です。

Azure Cache for Redis とは?

簡潔に言えば、Azure Cache for Redis とは、オープンソースの Redis をベースとした専用のインメモリキャッシュデータストアであり、Azure 内外のアプリケーションからアクセスできます。データをメモリ内データストアにロードし、そこから直接読み取ることで、データベースへの呼び出し回数を大幅に削減できます。

データをキャッシュ層に配置することで、アプリケーションが同じデータを何度も繰り返し取得する必要がなくなります。その結果、パフォーマンス負荷をデータベース層からキャッシュ側へオフロードでき、以下のような効果が期待できます。

  • データベースパフォーマンスの大幅な改善
  • レイテンシの低減
  • 他のデータ要求のためにリソースを解放

もちろん、アプリケーションコードの変更は必要になりますが、その見返りとしてデータベースのパフォーマンスを大きく向上させられる可能性があります。Microsoft の公式ドキュメントには、比較的複雑なアプリケーションの実装例も紹介されています。

さらに、これはパフォーマンス面だけでなくコスト面でもメリットがあります。リソース消費が減れば、Azure SQL Database をより低いサービス階層へスケールダウンできる可能性もあるのです。

はじめ方

Azure Portal で [リソースの作成] を開き、[データベース] カテゴリから [Azure Cache for Redis] を選択します。

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

まずキャッシュタイプのオプションに注目してください。必ず価格レベルへのリンクをクリックし、自分の環境に適したプランを選びましょう。ここでは例として最も安価な Basic C0 を選択しています。250 MB のキャッシュ容量で、月額約 16 ドルの見積もりです。より大容量のプランになると、費用はかなり高くなる場合があります。

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

[ネットワーク] タブでは、パブリックアクセスまたはプライベートエンドポイントのいずれかを選択して [次へ] へ進みます。

Azure Cache for Redis で Azure SQL のパフォーマンスを大幅に向上させる方法

続いて、使用する Redis のバージョンを選択します。バージョン 6 がプレビューとして提供されている点にも注目してください。[次へ] を押すとタグの設定画面に移動しますが、ここでは特に必要がないためスキップします。最後に内容を確認して [作成] を実行すれば、リソースの完成です。

Redis Cache リソースを作成した後、実際に運用するには、データの保存方法やアプリケーションからの接続設定など、追加の手順が必要になります。詳細な手順は公式ドキュメントに譲りますが、本記事ではポータル内の場所と基本的な作成方法をご紹介しました。

まとめ

1時間に数千回もの繰り返しデータ呼び出しが発生する環境で運用している方にとって、Azure Cache for Redis は非常に検討する価値のあるソリューションです。ぜひパフォーマンスチューニングのツールキットに加えてみてください。導入に必要な情報はすべて Microsoft の公式ドキュメントにまとめられています。また、セキュリティに関する考慮事項についても必ず目を通しておきましょう。Microsoft Learn には実践的なドキュメントが多数公開されています。

  1. Grafana用Redisデータソースで構築した実用的なアプリケーション3選

    【2021年3月29日更新】https://coronavirusapi.com/ は最近、無料でのデータアクセスを終了し、登録済みの一次対応者のみが利用できる仕様に変更されました。残念ながら、これにより新型コロナウイルス感染症の症例可視化プロジェクトのデモは動作しなくなりましたが、RedisTimeSeriesデータをGrafanaのWorldmapパネルに表示したい場合には、本記事で紹介するヒントは他の多くの実装にも引き続き役立つでしょう。 以前の記事では、新しく登場したGrafana用Redisデータソースの概要と基本的な使い方を解説しました。 Grafana用Redisデータソース

  2. 【Redis入門】HSET・HSETNX・HMSETコマンドでハッシュのフィールドに値を設定する方法

    このチュートリアルでは、Redisのキーに格納されたハッシュ値の各フィールドに対して値を設定する方法を解説します。使用するのは HSET、HSETNX、HMSET の3つのコマンドです。それぞれの構文、戻り値、実行例を順番に見ていきましょう。 HSETコマンドとは HSET コマンドは、指定したキーに格納されているハッシュ内の指定フィールドに値を設定します。 フィールドがすでに存在する場合は、既存の値が上書きされます。 キーが存在しない場合は、設定操作の前にハッシュを保持する新しいキーが自動的に作成されます。 キーは存在するものの、格納されている値がハッシュ型でない場合はエラーが返されます。