データベース設定のベストプラクティス

クラウドインフラストラクチャーにAdobe Commerceをデプロイする際に、データベースのパフォーマンスを向上させ、データベースを効率的に操作するためのベストプラクティスについて説明します。

対象製品

クラウドインフラストラクチャー上のAdobe Commerce

すべての MyISAM テーブルを InnoDB に変換する

Adobeでは、InnoDB データベースエンジンを使用することをお勧めします。 デフォルトのAdobe Commerce インストールでは、データベース内のすべてのテーブルが InnoDB エンジンを使用して格納されます。 ただし、一部のサードパーティモジュール(拡張機能)では、MyISAM 形式のテーブルを導入できます。 サードパーティ製モジュールをインストールしたら、データベースをチェックして次のテーブルを識別します myisam 形式を設定して次のように変換します innodb 形式。

モジュールに MyISAM テーブルが含まれているかどうかの確認

インストールする前にサードパーティのモジュールコードを分析して、MyISAM テーブルを使用しているかどうかを判断できます。

すでに拡張機能をインストールしている場合は、次のクエリを実行して、データベースに MyISAM テーブルがあるかどうかを確認します。

SELECT table_schema, CONCAT(ROUND((index_length+data_length)/1024/1024),'MB')
    AS total_size FROM information_schema. TABLES WHERE engine='myisam' AND table_schema
    NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys');

ストレージエンジンを InnoDB に変更する

が含まれる db_schema.xml テーブルを宣言するファイルで、 engine 対応するの属性値 table ノード先 innodb. 詳しくは、を参照してください 宣言型スキーマ/テーブルノードを設定 開発者向けドキュメントを参照してください。

宣言型スキームは、クラウドインフラストラクチャバージョン 2.3 上のAdobe Commerceで導入されました。

ネイティブの MySQL 検索用に推奨される検索エンジンを設定

Adobeでは、Adobe Commerce アプリケーションにサードパーティの検索ツールを設定する予定がある場合でも、クラウドインフラストラクチャプロジェクトでAdobe Commerceに対して常にElasticsearchまたは OpenSearch を設定することをお勧めします。 この設定により、サードパーティの検索ツールでエラーが発生した場合に備えたフォールバックオプションが提供されます。

使用する検索エンジンは、インストールされているAdobe Commerce on cloud バージョンによって異なります。

  • Adobe Commerce 2.4.4 以降では、ネイティブの MySQL 検索に OpenSearch サービスを使用します。

  • 以前のバージョンのAdobe Commerceの場合は、Elasticsearchを使用します。

現在使用されている検索エンジンを確認するには、次のコマンドを実行します。

./bin/magento config:show catalog/search/engine

設定手順については、Adobe Commerce on cloud の開発者ガイドを参照してください。

カスタムトリガーの回避

可能であれば、カスタムトリガーの使用は避けます。

トリガーは、変更を監査テーブルに記録するために使用されます。 Adobeは、次の理由から、トリガー機能を使用する代わりに、監査表に直接書き込むようにアプリケーションを設定することをお勧めします。

  • トリガーはコードとして解釈され、MySQL は事前にコンパイルしません。 クエリのトランザクション領域にフックすると、テーブルで実行される各クエリのパーサーとインタープリターにオーバーヘッドが追加されます。
  • トリガーは元の問い合わせと同じトランザクション領域を共有し、それらの問い合わせがテーブルのロックに競合する間、トリガーは別のテーブルのロックに独立して競合する。

カスタムトリガーの代替手段について詳しくは、を参照してください。 MySQL トリガー.

アップグレード ECE-Tools バージョン 2002.0.21 以降へ ece-tools-version

Cron デッドロックの潜在的な問題を回避するには、ECE-Tools をバージョン 2002.0.21 以降にアップグレードしてください。 手順については、を参照してください 更新 ece-tools version 開発者向けドキュメントを参照してください。

インデクサーモードの安全な切り替え

インデクサーの切り替えで生成されるもの data definition language (DDL)ステートメントを使用して、データベース・ロックの原因となる可能性のあるトリガーを作成します。 この問題を回避するには、web サイトをメンテナンスモードにし、設定を変更する前に cron ジョブを無効にします。
手順については、を参照してください インデクサーの設定 が含まれる Adobe Commerce設定ガイド.

実稼動環境で DDL ステートメントを実行しない

競合(テーブルの変更や作成など)を防ぐために、実稼動環境では DDL ステートメントを実行しないでください。 この setup:upgrade プロセスは例外です。

DDL ステートメントを実行する必要がある場合は、web サイトをメンテナンスモードにして、cron を無効にします(前の節のインデックスを安全に切り替える手順を参照)。

注文のアーカイブを有効にする

管理者からの注文アーカイブを有効にして、注文データの増加に合わせてセールステーブルに必要なスペースを減らします。 アーカイブにより、MySQL のディスク領域が節約され、チェックアウトのパフォーマンスが向上します。

参照: アーカイブを有効にする Adobe Commerce マーチャントドキュメントを参照してください。

追加情報

recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60