資料庫組態的最佳實務
瞭解在雲端基礎結構上部署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商家檔案中的啟用封存。