MySQL設定最佳實務

NOTE
此主題包含業界標準的軟體術語,有些人可能會發現這些術語具有種族主義、性別歧視或壓迫性,可能會讓讀者感到傷害、創傷或不受歡迎。 Adobe正在從程式碼、檔案和使用者體驗中移除這些詞語。

觸發器

本文說明在使用MySQL觸發程式時,如何避免效能問題。 觸發器用於將變更記錄到稽核表中。

受影響的產品和版本

  • Adobe Commerce內部部署
  • 雲端基礎結構上的Adobe Commerce
WARNING
對於雲端專案上的Adobe Commerce,在變更生產環境的設定之前,請一律在中繼環境中測試設定變更。

效能影響

觸發程式會解譯為程式碼,表示MySQL不會預先編譯它們。

掛接到查詢的交易空間時,會觸發為使用表格執行的每個查詢向剖析器和解譯器增加額外負荷。 觸發程式與原始查詢共用相同的交易空間,當這些查詢競爭表格上的鎖定時,觸發程式會獨立競爭另一個表格上的鎖定。

如果使用許多觸發程式,這些額外的額外開銷可能會對網站上的網站效能產生負面影響。

WARNING
Adobe Commerce不支援Adobe Commerce資料庫中的任何自訂觸發器,因為自訂觸發器可能會與未來Adobe Commerce版本不相容。 如需最佳實務,請參閱Adobe Commerce檔案中的一般MySQL准則

有效使用

若要在使用觸發程式時防止效能問題,請遵循下列准則:

  • 如果您有在執行觸發程式時寫入某些資料的自訂觸發程式,請移動此邏輯以直接寫入稽核表格。 例如,在應用程式程式碼中新增其他查詢,然後在您打算為其建立觸發器的查詢後進行。
  • 檢閱現有的自訂觸發器,並考慮移除這些觸發器,然後直接從應用程式端寫入表格。 使用SHOW TRIGGERS SQL陳述式檢查資料庫中現有的觸發程式。
  • 如需其他協助、問題或顧慮,請提交Adobe Commerce支援票證

從屬連線

Adobe Commerce可以非同步讀取多個資料庫。 如果您預期部署在雲端基礎結構Pro架構上的Commerce站台的MySQL資料庫會有高負載,Adobe建議啟用MYSQL從屬連線。

當您啟用MYSQL從屬連線時,Adobe Commerce會使用資料庫的唯讀連線,來接收非主節點上的唯讀流量。 當只有一個節點處理讀寫流量時,可透過負載平衡來改善效能。

受影響的版本

雲端基礎結構上的Adobe Commerce,僅限Pro架構

設定

在雲端基礎結構上的Adobe Commerce中,您可以設定MYSQL_USE_SLAVE_CONNECTION變數,覆寫MYSQL從屬連線的預設設定。 將此變數設為true以自動使用資料庫的唯讀連線。

若要啟用MySQL從屬連線

  1. 在本機工作站上,變更至專案目錄。

  2. .magento.env.yaml檔案中,將MYSQL_USE_SLAVE_CONNECTION設定為true。

    code language-none
    stage:
      deploy:
        MYSQL_USE_SLAVE_CONNECTION: true
    
  3. 認可.magento.env.yaml檔案變更並推播至遠端環境。

    部署成功完成後,雲端環境就會啟用MySQL從屬連線。

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