資料庫組態的最佳實務

瞭解在雲端基礎結構上部署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檔案中,將對應的table節點的engine屬性值設定為innodb。 如需參考,請參閱我們的開發人員檔案中的設定宣告式結構描述>資料表節點

宣告式配置是在Adobe Commerce的雲端基礎結構2.3版中引入。

設定原生MySQL搜尋的建議搜尋引擎

Adobe建議您一律在雲端基礎結構專案中為您的Adobe Commerce設定Elasticsearch或OpenSearch,即使您計畫為您的Adobe Commerce應用程式設定協力廠商搜尋工具亦然。 此設定會提供在第三方搜尋工具失敗時的備援選項。

您使用的搜尋引擎取決於所安裝的雲端版本Adobe Commerce:

  • 若是Adobe Commerce 2.4.4和更新版本,請使用OpenSearch服務進行原生MySQL搜尋。

  • 若是舊版Adobe Commerce,請使用Elasticsearch。

若要判斷目前使用中的搜尋引擎,請執行以下命令:

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

如需設定指示,請參閱雲端上Adobe Commerce的開發人員指南:

避免自訂觸發器

儘可能避免使用自訂觸發器。

觸發器用於將變更記錄到稽核表中。 Adobe建議將應用程式設定為直接寫入稽核表格,而非使用觸發功能,原因如下:

  • 觸發器會解譯為程式碼,而MySQL不會預先編譯它們。 掛接至查詢的交易空間時,會為使用表格執行的每個查詢新增剖析器和解譯器的額外負荷。
  • 觸發程式與原始查詢共用相同的交易空間,當這些查詢競爭表格上的鎖定時,觸發程式會獨立競爭另一個表格上的鎖定。

若要瞭解使用自訂觸發器的替代方案,請參閱MySQL觸發程式

將ECE-Tools升級至2002.0.21版或更新版本 ece-tools-version

若要避免cron死結的潛在問題,請將ECE-Tools升級至2002.0.21版或更新版本。 如需指示,請參閱我們的開發人員檔案中的更新ece-tools版本

安全地切換索引器模式

切換索引器會產生data definition language (DDL)陳述式來建立觸發程式,這可能會導致資料庫鎖定。 您可以在變更設定前,先將網站置於維護模式並停用cron工作,即可避免此問題。
如需指示,請參閱 Adobe Commerce設定指南 ​中的設定索引子

請勿在生產環境中執行DDL陳述式

請避免在生產環境中執行DDL陳述式以避免衝突(例如修改和建立表格)。 setup:upgrade處理序是一個例外狀況。

如果您需要執行DDL陳述式,請將網站置於維護模式並停用cron (請參閱上一節中有關安全切換索引的說明)。

啟用訂單封存

啟用管理員的訂單封存,以隨著訂單資料成長,減少Sales表格所需的空間。 封存可節省MySQL磁碟空間並改善簽出效能。

請參閱Adobe Commerce商家檔案中的啟用封存

其他資訊

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