一般的な MySQL ガイドライン
参照: 必要システム構成 (サポートされている MySQL バージョン用)
Adobe 強く では、データベースを設定する際に、次の標準に従うことをお勧めします。
- Adobe Commerceが使用する MySQL データベーストリガー インデックス再作成中のデータベースアクセスを改善する。 これらは、インデクサーモードがに設定されている場合に作成されます。 スケジュール. カスタムトリガーは将来のAdobe Commerceとの互換性を失う可能性があるため、データベース内のカスタムトリガーはサポートされません。
- に慣れる mysql トリガーに関して考えられる次の制限事項 先に進む前に。
- データベースのセキュリティ体制を強化するには、
STRICT_ALL_TABLES
SQL モードを使用すると、不要なデータベースインタラクションを引き起こす可能性のある無効なデータ値を保存しないようにすることができます。 - Adobe Commerce ではない mysql ステートメントベースのレプリケーションをサポートします。 を使用していることを確認してください。 のみ 行ベースのレプリケーション.
CREATE TEMPORARY TABLE
トランザクション内のステートメント。以下に示します 互換性なし データベース実装では、次のような GTID ベースのレプリケーションを使用します Google Cloud SQL の第 2 世代インスタンス. Cloud SQL 8.0 用の MySQL を代替案として検討してください。Ubuntu への MySQL のインストール
Adobe Commerce 2.4 には、MySQL 8.0 のクリーンインストールが必要です。以下のリンクに従って、お使いのマシンに MySQL をインストールする手順を確認してください。
多数の製品を読み込む場合は、の値を増やすことができます max_allowed_packet
これは、デフォルトの 16 MB よりも大きいサイズです。
max_allowed_packet
の値。 Adobe Commerce on cloud infrastructure スターターを使用すると、 /etc/mysql/mysql.cnf
ファイル。値を増やすには、 /etc/mysql/mysql.cnf
テキストエディターでファイルを開き、の値を探します max_allowed_packet
. 変更をに保存します。 mysql.cnf
ファイルを開き、テキストエディターを閉じて、MySQL (service mysql restart
)に設定します。
オプションで、設定した値を確認するには、に次のコマンドを入力します mysql>
プロンプト:
SHOW VARIABLES LIKE 'max_allowed_packet';
その後、 データベースインスタンスの設定.
MySQL 8 の変更
Adobe Commerce 2.4 では、MySQL 8 がサポートされるようになりました。
この節では、開発者が認識しておくべき、MySQL 8 の主な変更点について説明します。
整数タイプ (パディング)の幅を削除
整数データ型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT)の表示幅の仕様は、MySQL 8.0.17 で非推奨(廃止予定)となりました。出力にデータ型の定義を含むステートメントは、TINYINT (1)を除き、整数型の表示幅を表示しなくなりました。 MySQL コネクタは、TINYINT (1)列が BOOLEAN 列として生成されることを前提としています。 この例外により、ユーザーは引き続きその前提を立てることができます。
例
mysql 8.19 での admin_user について説明します。
int unsigned
NULL
auto_increment
firstname
varchar(32)
NULL
lastname
varchar(32
)NULL
email
varchar(128)
NULL
username
varchar(40)
NULL
password
varchar(255)
NULL
created
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
更新時 CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
0
次を除く TINYINT (1)、すべての整数のパディング(TINYINT > 1、SMALLINT、MEDIUMINT、INT、BIGINT)を db_schema.xml
ファイル。
詳しくは、を参照してください https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.
デフォルトの並べ替え順
8.0 より前のエントリは、外部キーで並べ替えられていました。 デフォルトの並べ替え順は、使用するエンジンによって異なります。
コードが特定の並べ替えに依存している場合は、常に並べ替え順を指定します。
GROUP BY の非推奨の ASC 修飾子と DESC 修飾子
MySQL 8.0.13 以降、は非推奨になりました ASC
または DESC
の修飾子 GROUP BY
条項が削除されました。 以前に依存していたクエリ GROUP BY
並べ替えにより、以前の MySQL バージョンとは異なる結果が生成される場合があります。 特定の並べ替え順を生成するには、次を指定します ORDER BY
句。
Commerceと MySQL 8
MySQL 8 を適切にサポートするために、Adobe Commerceにいくつかの変更が加えられました。
クエリと挿入の動作
Adobe Commerceは、に SET SQL_MODE="を設定して、通常の検証動作を無効にしました。 /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.
. 検証が無効の場合、MySQL がデータを切り捨てる可能性があります。 MySQL では、クエリの動作が変更されました。 Select * on my_table where IP='127.0.0.1'
が結果を返さなくなりました。これは、IP アドレスが整数ではなく、文字列として正しく認識されるからです。
Mysql 5.7 から MySQL 8 へのアップグレード
MySQL をバージョン 5.7 からバージョン 8 に適切にアップデートするには、次の手順に従う必要があります。
-
Adobe Commerceを 2.4.0 にアップグレードします。すべてをテストし、システムが期待どおりに動作することを確認します。
-
メンテナンスモードを有効にする:
code language-bash bin/magento maintenance:enable
-
データベースのバックアップを作成します。
code language-bash bin/magento setup:backup --db
-
MySQL をバージョン 8 にアップデートします。
-
バックアップしたデータを MySQL に読み込みます。
-
キャッシュのクリーンアップ:
code language-bash bin/magento cache:clean
-
メンテナンスモードを無効にする:
code language-bash bin/magento maintenance:disable
データベースインスタンスの設定
この節では、Adobe Commerceのデータベースインスタンスを作成する方法について説明します。 新しいデータベースインスタンスを使用することをお勧めしますが、既存のデータベースインスタンスを使用してAdobe Commerceをインストールすることもできます。
MySQL データベースインスタンスを設定するには、次の手順に従います。
-
任意のユーザーとしてデータベースサーバーにログインします。
-
MySQL コマンドプロンプトに移動します。
code language-bash mysql -u root -p
-
MySQL を入力
root
プロンプトが表示されたらユーザーのパスワードを入力します。 -
次のコマンドを表示されている順序で入力して、という名前のデータベースインスタンスを作成します。
magento
ユーザー名magento
:code language-sql create database magento;
code language-sql create user 'magento'@'localhost' IDENTIFIED BY 'magento';
code language-sql GRANT ALL ON magento.* TO 'magento'@'localhost';
code language-sql flush privileges;
-
Enter
exit
をクリックして、コマンドプロンプトを終了します。 -
データベースを確認します。
code language-bash mysql -u magento -p
MySQL モニターが表示された場合は、データベースが正しく作成されています。 エラーが表示された場合は、上記のコマンドを繰り返します。
-
Web サーバーとデータベース・サーバーが異なるホスト上にある場合は、データベース・サーバー・ホスト上でこのトピックで説明されているタスクを実行し、次の項目を確認します リモート MySQL データベース接続の設定.
ビジネスに適したデータベースインスタンスを設定することをお勧めします。 データベースを設定する際は、次の点に注意してください。
-
インデクサーには、より高い値が必要です
tmp_table_size
およびmax_heap_table_size
値(例:64 M)。 を設定する場合batch_size
パラメーターを使用すると、その値をテーブルサイズの設定と共に調整して、インデクサーのパフォーマンスを向上させることができます。 を参照してください。 最適化ガイド を参照してください。 -
最適なパフォーマンスを得るには、すべての MySQL およびAdobe Commerce インデックステーブルをメモリに保持できるようにします(例:
innodb_buffer_pool_size
)に設定します。 -
MariaDB 10.4 でのインデックス再作成は、他の MariaDB または MySQL バージョンに比べて時間がかかります。 参照: 設定のベストプラクティス.
-
-
MySQL の場合
TIMESTAMP
アプリケーションの宣言型スキーマアーキテクチャが想定する環境設定および構成に従うフィールド、システム変数explicit_defaults_for_timestamp
に設定する必要があります。on
.参照:
この設定が有効になっていない場合、
bin/magento setup:db:status
は常にと報告しますDeclarative Schema is not up to date
.
explicit_defaults_for_timestamp
の設定は非推奨(廃止予定)です。 この設定は、今後の MySQL リリースで削除される非推奨の TIMESTAMP 動作を制御します。 これらの動作が削除されると、 explicit_defaults_for_timestamp
の設定も削除されました。explicit_defaults_for_timestamp
mysql (MariaDB)のデフォルト設定は次のとおりです。 オフ.MariaDB 10.4 および 10.6 でのインデックス再作成は、以前のバージョンの MariaDB または MySQL と比較して時間がかかります。 インデックス再作成を高速化するには、次の MariaDB 設定パラメーターを設定することをお勧めします。
MariaDB 10.6 にアップグレードした後、インデックス作成に関係なくパフォーマンスが低下する場合は、 --query-cache-type
の設定値。 例: --query-cache-type=ON
.
クラウドインフラストラクチャプロジェクトでAdobe Commerceをアップグレードする前に、MariaDB (mariaDB アップグレードのベストプラクティスを参照してください)に設定します。
例:
- Adobe Commerce 2.4.6 (MariaDB バージョン 10.5.1 以降)
- Adobe Commerce 2.3.5 と MariaDB バージョン 10.3 以前
これらの推奨事項に加えて、次のパラメータの設定についてはデータベース管理者に問い合わせてください。