PolarDB MySQL版支援高績效參數模板功能。本章節詳細介紹PolarDB MySQL版支援的高績效參數模板中的參數設定情況,以及如何開啟高績效參數模板和開啟高效能模板前後的效能提升情況。
高績效參數模板簡介
由於PolarDB的參數比較多,針對特定情境進行參數適配的學習成本比較高。為了滿足客戶對資料庫效能的需求,PolarDB推出了高績效參數模板,您可以將高績效參數模板應用於目的地組群,或者基於該模板進一步配置叢集參數。在通常情況下,高績效參數模板能夠提升資料庫的效能。
在PolarDB MySQL版支援的高績效參數模板中,設定或開啟的功能如下:
參數 | 參數說明 | 高績效參數模板中取值 | 參數預設值 |
innodb_flush_log_at_trx_commit | 設定為0後,每秒寫入並重新整理一次,從而提升資料庫的持久性,提升效能。 | 0 | 1 |
query_cache_type | 是否開啟Fast Query Cache功能。開啟後,可有效提高資料庫的查詢效能。 | 1 | 0 |
參數 | 參數說明 | 高績效參數模板中取值 | 參數預設值 |
innodb_flush_log_at_trx_commit | 設定為0後,每秒寫入並重新整理一次,從而提升資料庫的持久性,提升效能。 | 0 | 1 |
loose_innodb_primary_purge_max_id_lag | 設定為18446744073709551104時,將取消RO節點上的讀視圖對RW節點的限制。 | 18446744073709551104 | 無 |
參數 | 參數說明 | 高績效參數模板中取值 | 參數預設值 |
innodb_flush_log_at_trx_commit | 設定為0後,每秒寫入並重新整理一次,從而提升資料庫的持久性,提升效能。 | 0 | 1 |
loose_innodb_lock_sys_rec_partition | 事務鎖的分區數量。在InnoDB內,可採用分區的方式,對事務鎖(包括行鎖和表鎖)進行管理,從而減少事務鎖管理所引入的競爭開銷。 | 64 | 1 |
loose_query_cache_type | 是否開啟Fast Query Cache功能。開啟後,可有效提高資料庫的查詢效能。 | ON | OFF |
使用限制
PolarDB標準版和叢集版都支援高績效參數模板。叢集版本需為如下版本之一:
PolarDB MySQL版 5.6版本且Revision version為5.6.1.0.30或以上。
PolarDB MySQL版 5.7版本且Revision version為5.7.1.0.11或以上。
PolarDB MySQL版 8.0.1版本且Revision version為8.0.1.1.21或以上。
PolarDB MySQL版 8.0.2版本且Revision version為8.0.2.2.6.1或以上。
您可以通過查詢版本號碼確認叢集版本。
適用情境與潛在風險
在通常情況下,高績效參數模板能夠提升資料庫的效能。但應用高效能模板後,由於該模板以追求效能為目標,會導致資料庫使用過程中存在一定風險:
資料持久性會減弱。由於innodb_flush_log_at_trx_commit參數被置為
0,如果資料庫crash了,1秒內沒有被刷盤的資料可能會丟失。主備複寫延遲可能會增加。由於innodb_flush_log_at_trx_commit參數被置為
0,主備節點的物理複製可能會被延遲到1秒左右。
如果要規避上述風險,您可以重設innodb_flush_log_at_trx_commit為1。
因此,若您的業務接受損失部分資料庫穩定性作為代價,追求更高的資料庫效能,則您可以為您的叢集應用該高績效參數模板。
在應用高績效參數模板前,建議您先提交工單向阿里雲技術團隊諮詢確認。
應用高績效參數模板
您可以通過以下兩種方式為您的叢集應用高績效參數模板。
在為叢集應用高績效參數模板後,資料庫需要重新啟動。重啟期間,您的服務會有閃斷。因此建議您在業務低峰期操作,並確保應用程式具有重連機制。
方式一:
登入PolarDB控制台。
在控制台左上方,選擇叢集所在地區。
在左側導覽列中,單擊參數模板。
在參數模板頁面,單擊系統參數模板。
選擇名稱為mysql_innodb_5.6_高績效參數模板、mysql_innodb_5.7_高績效參數模板或mysql_innodb_8.0_高績效參數模板的模板,單擊操作列的应用到集群。
在應用到執行個體頁面中,選擇要應用高績效參數的叢集,並單擊>將其添加至已選執行個體列表中。

選擇叢集後,您可以在參數對比地區查看叢集參數的當前參數值與高績效參數模板中參數值的差異。
單擊確定。
說明為叢集應用高績效參數模板後,資料庫需要重新啟動。
方式二:
登入PolarDB控制台。
在控制台左上方,選擇叢集所在地區。
找到目的地組群,單擊叢集ID。
在左側導覽列中,選擇。
單擊應用模板。

在應用模板頁面的模板名稱下拉式清單中選擇對應的高效能模板。

選擇模板後,您可以在參數對比地區查看叢集參數的當前參數值與高績效參數模板中參數值的差異。
單擊確定。
說明為叢集應用高績效參數模板後,資料庫需要重新啟動。
效能對比
本節以PolarDB MySQL版8.0版本支援的高績效參數模板為例,在Sysbench和TPC-C情境下,分別測試預設參數和應用高績效參數模板後的叢集效能。
Sysbench是一個跨平台且支援多線程的模組化基準測試載入器,用於評估系統在運行高負載的資料庫時相關核心參數的效能表現。
TPC-C是業界常用的一套Benchmark,由TPC委員會制定發布,用於評測資料庫的聯機交易處理(偏向OLTP)能力。
本文中TPC-C的實現基於TPC-C的基準測試,並不能與發行的TPC-C基準測試結果相比較,本文中的測試並不符合TPC-C基準測試的所有要求。
測試環境:
PolarDB MySQL版叢集:
叢集規格:88c720g。
核心版本:8.0.1.1.21及以上。
壓力機環境:
壓力機與資料庫ping延遲為1ms左右。
壓力機的計算資源和網路資源充足。
Sysbench測試過程:
測試集:read_write、write_only。
起始資料量:25張表 × 25000行資料。
效能指標:分別測試在1、8、16、32、64、128、256、512、1024並發數下的QPS(Queries per Second),即資料庫每秒執行的SQL數(含INSERT、SELECT、UPDATE、DELETE等)。
TPC-C測試過程:
測試載入器:TPCC-MySQL。
起始資料量:1000 warehouse。
效能指標:分別測試在1、8、16、32、64、128、256、512、1024並發數下的tpmC(Transactions per Minute),其可以衡量資料庫最大有效輸送量(MQTh,Max Qualified Throughput)。
測試結果:
Sysbench測試:

TPC-C測試:

結論:從以上Sysbench和TPC-C的測試結果可以看出,應用了高績效參數模板後,相比預設參數值,叢集的效能隨著並發數的增加,有顯著提升。在達到256並發數後,高績效參數模板的效能是預設參數模板的2倍甚至更高。