MySQL設定のベストプラクティス
トリガー
この記事では、MySQL トリガーを使用する際のパフォーマンスの問題を回避する方法について説明します。 トリガーは、監査テーブルに変更を記録するために使用されます。
影響を受ける製品とバージョン
- Adobe Commerce オンプレミス
- Adobe Commerce on cloud infrastructure
パフォーマンスへの影響
トリガーは、MySQLがプリコンパイルしないコードとして解釈されます。
クエリのトランザクションスペースに接続すると、トリガーは、テーブルで実行される各クエリのパーサーとインタプリターにオーバーヘッドを追加します。 トリガーは元のクエリと同じトランザクションスペースを共有し、それらのクエリはテーブル上のロックを競いますが、トリガーは別のテーブルのロックを競います。
多くのトリガーを使用している場合、このようなオーバーヘッドが増えることで、サイトのパフォーマンスに悪影響を及ぼす可能性があります。
効果的な利用
トリガーを使用する際のパフォーマンスの問題を回避するには、次のガイドラインに従います。
- トリガーの実行時に一部のデータを書き込むカスタムトリガーがある場合は、代わりに監査テーブルに直接書き込むようにこのロジックを移動します。 例えば、トリガーコードにクエリを追加し、クエリの後にアプリケーションコードを追加します。
- 既存のカスタムトリガーを確認し、それらを削除して、アプリケーション側からテーブルに直接書き込むことを検討します。
SHOW TRIGGERSSQL ステートメント を使用して、データベース内の既存のトリガーを確認します。 - 追加サポート、質問、懸念事項については、Adobe Commerce サポートチケットを送信してください。
スレーブ接続
Adobe Commerceは、複数のデータベースを非同期で読み取ることができます。 Cloud Infrastructure Pro アーキテクチャにデプロイされたCommerce サイトのMySQL データベースに高い負荷が発生する場合は、AdobeでMYSQL スレーブ接続を有効にすることをお勧めします。
MYSQL スレーブ接続を有効にすると、Adobe Commerceはデータベースへの読み取り専用接続を使用して、非マスターノードで読み取り専用トラフィックを受信します。 読み取りと書き込みのトラフィックを処理するノードが1つしかない場合、負荷分散によってパフォーマンスが向上します。
影響のあるバージョン
Adobe Commerce オンクラウドインフラストラクチャ、プロアーキテクチャのみ
設定
Adobe Commerce on cloud インフラストラクチャでは、MYSQL_USE_SLAVE_CONNECTION変数を設定することで、MYSQL スレーブ接続のデフォルト設定を上書きできます。 この変数をtrueに設定すると、データベースへの読み取り専用接続が自動的に使用されます。
MySQL スレーブ接続を有効にするには:
-
ローカル ワークステーションで、プロジェクト ディレクトリに移動します。
-
.magento.env.yamlファイルで、MYSQL_USE_SLAVE_CONNECTIONをtrueに設定します。code language-yaml stage: deploy: MYSQL_USE_SLAVE_CONNECTION: true -
.magento.env.yamlファイルの変更を確定し、リモート環境にプッシュします。デプロイメントが正常に完了すると、クラウド環境でMySQL スレーブ接続が有効になります。