本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調校寫入工作負載
實作負載平衡並釋放寫入器執行個體將有助於您的寫入工作負載在高峰值期間更好地執行。若要在高度並行下獲得更佳寫入效能,請遵循下列其他步驟。
將參考完整性移至應用程式層
雖然參考完整性檢查很重要,但對於超擴展來說,其可能會對您的負載產生不利影響。對於每次寫入,必須在寫入本身執行之前執行額外掃描,這會導致效能不佳。如果您的應用程式需要嚴格的完整性檢查,請將其建置到應用程式層以防止其限制您的寫入。
避免使用重度主索引鍵
讓您的主索引鍵保持輕鬆。InnoDB 儲存引擎會將主索引鍵附加至您在資料表中建立的每個其他索引。當主索引鍵很大時,它會影響索引的大小。如果主索引鍵很大,資料頁面的儲存和擷取將會變慢。常見範例是使用通用唯一識別碼作為主索引鍵。如果您的目標是超擴展環境中的效能,那麼這不是一個好方法。
使用分割區交換將資料載入到分割的資料表
如果您要將大量資料寫入分割的資料表,則 LOAD DATA FROM S3 和分割區交換
移除未使用的索引
InnoDB
確保有效地清除舊資料列版本
在多版本並行控制 (MVCC) 的 InnoDB 實作中,當修改記錄時,要修改的資料的目前 (舊) 版本首先記錄為復原日誌中的復原記錄。不斷增長的歷史記錄清單長度 (HLL) 值表示 InnoDB 垃圾回收執行緒 (清除執行緒) 跟不上寫入工作負載,或清除被長時間執行的查詢或交易封鎖。在垃圾回收已封鎖或延遲時,資料庫可能會出現嚴重的清除遲時,從而對查詢效能產生負面影響。您可以使用下列建議來優化清除程序。
-
保持較小的交易。
-
對於讀取查詢,請使用 READ COMMITTED 隔離層級。
-
增加清除執行緒數量 (innodb_purge_threads
和 innodb_purge_batch_size )。請注意,調校這些參數需要重新開機。 -
定期監控 HLL,並解決任何阻止垃圾回收進行的工作負載問題。
確保日誌記錄不會導致其他爭用
一般查詢日誌記錄用戶端連線和中斷連線,以及伺服器依接收順序接收的所有陳述式。啟動時,日誌記錄是同步的,這可能會導致忙碌系統的效能大幅下降。除非需要,我們建議停用一般日誌。
慢速查詢日誌記錄執行時間超過 long_query_time