OceanBase學習之路48|最佳效能引數的配置參考
本節主要從硬體配置、通用引數、MemStore 相關引數、Clog、事務及 RPC 相關引數、SQL 層及其他引數以及OBProxy 相關引數等方面提供最佳效能引數的配置參考。
硬體配置說明
作為原生的分散式關聯式資料庫,OceanBase 資料庫具有極強的可擴充套件性,伺服器的硬體配置越高,資料庫服務的效能也會越好。
本文以下表中的伺服器配置為例,提供最佳效能配置參考。
伺服器配置項 | 描述 |
---|---|
伺服器數量 | 3 臺 |
晶片 | Intel |
CPU | 96 C |
記憶體 | 512 G |
磁碟 | 2TB NVME SSD 儲存 |
網路卡 | 萬兆網路卡 |
作業系統 | Linux kernel 3.1 及以上 |
檔案系統 | 建議使用 EXT4 或 XFS |
通用引數(叢集級引數)
在通用引數中,您可以透過調整以下叢集級引數來使效能達到最佳。
net_thread_count
配置說明
調整 Libeasy 網路的執行緒數,預設值為
12
。適當的調低該配置項能降低執行緒切換的開銷,提升效能。
配置值
建議配置為 CPU 核數的 1/6,最少 4 個。
配置示例
obclient> ALTER SYSTEM SET net_thread_count = 4;
syslog_io_bandwidth_limit
配置說明
透過調整該引數的值,可以減小
observer.log
檔案帶來的 IO 消耗,但是調小該引數可能會導致丟失一些除錯日誌資訊。
配置值
建議配置為
10M
。
配置示例
obclient> ALTER SYSTEM SET syslog_io_bandwidth_limit = '10M';
clog_sync_time_warn_threshold
配置說明
Clog 日誌同步慢時會觸發 Debug 日誌的輸出。透過從預設值
100ms
調整為
2000ms
,可以減少日誌中輸出的資訊。
配置值
建議配置為
2000ms
。
配置示例
obclient> ALTER SYSTEM SET clog_sync_time_warn_threshold='2000ms';
syslog_level
配置說明
調整日誌的列印級別,降低列印日誌的開銷,對效能會一定的好處,但是調整該引數可能會導致丟失一些除錯日誌資訊。
配置值
建議配置為
INFO
。
配置示例
obclient> ALTER SYSTEM SET syslog_level=`INFO`;
通用引數(租戶級引數)
cpu_quota_concurrency
配置說明
控制併發任務的個數,預設值為
4
。如果 CPU 使用過於繁忙,可以嘗試調為
2
;如果併發很大,可以考慮再調大。適當的調低該配置項能降低執行緒切換的開銷,提升效能。
配置值
建議配置為
4
。
配置示例
obclient> ALTER SYSTEM SET cpu_quota_concurrency = 4;
memory_limit_percentage
配置說明
調整 OceanBase 資料庫佔系統總記憶體的比例,提高 OceanBase 資料庫可用的記憶體量。
配置值
建議配置為
80
。
配置示例
obclient> ALTER SYSTEM SET memory_limit_percentage = 80;
memstore_limit_percentage
配置說明
調整 MEMStore 佔租戶的記憶體比,需要儘量增大 MEMStore 的空間,但是可能對讀操作會有影響。
配置值
建議配置為
50
。
配置示例
obclient> ALTER SYSTEM SET memstore_limit_percentage = 50;
MemStore 相關引數(租戶級引數)
freeze_trigger_percentage
配置說明
調整啟動凍結或轉儲的時機,讓轉儲(Minor Compaction)儘早啟動,使 MEMStore 記憶體儘早釋放。
配置值
建議配置為
70
。
配置示例
obclient> ALTER SYSTEM SET freeze_trigger_percentage = 70;
writing_throttling_trigger_percentage
配置說明
調整寫入速度的閾值,在 MEMStore 的記憶體使用率達到 80% 時便開啟寫入限速。
配置值
建議配置為
80
。
配置示例
obclient> ALTER SYSTEM SET writing_throttling_trigger_percentage = 80;
writing_throttling_maximum_duration
配置說明
觸發寫入限速後,調整限速的速率,控制剩餘記憶體最多支援 1 小時的寫入。
配置值
建議配置為
1h
。
配置示例
obclient> ALTER SYSTEM SET writing_throttling_maximum_duration = '1h';
Clog、事務及 RPC 相關引數(叢集級引數)
_ob_trans_rpc_timeout
配置說明
增大事務處理的 RRC 超時時間(預設 3s 就會報錯),減少
transaction need rollback
發生的機率。
說明
由於
_xx_xx
格式的引數為隱藏引數,無法透過SHOW PARAMETERS
語句來查詢,您可以透過以下 SQL 語句檢視該引數。
obclient> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='_ob_trans_rpc_timeout';
配置值
建議配置為
25s
。
配置示例
obclient> ALTER SYSTEM SET _ob_trans_rpc_timeout = '25s';
memory_chunk_cache_size
配置說明
該引數用於設定記憶體分配器快取的記憶體塊容量。降低 OceanBase 資料庫內部 2 MB 記憶體塊被作業系統回收的機率,增大 2 MB 記憶體塊在 OceanBase 資料庫內部的複用率,減少 RPC 因記憶體操作慢而導致超時的風險。
配置值
建議配置為
0M
。
配置示例
obclient> ALTER SYSTEM SET memory_chunk_cache_size = '0M';
trx_2pc_retry_interval
配置說明
該引數值過大會導致 Coordinator 和參與者之間的重試間隔過大,從而導致 Commit 時間過長,進一步影響查詢效果。如果引數值過小,又可能導致 Schedular 頻繁的重試。
配置值
建議配置為
500ms
。
配置示例
obclient> ALTER SYSTEM SET trx_2pc_retry_interval = '500ms';
high_priority_net_thread_count
配置說明
用於設定單獨給 Election 等使用的網路執行緒,需要重啟 OBServer 才能生效。設定後,透過檢查日誌中的
HIGH PRIO RPC EASY STAT
關鍵字,可以看到這些執行緒處理請求的總數。
配置值
建議配置為
2
。
配置示例
obclient> ALTER SYSTEM SET high_priority_net_thread_count = 2;
__easy_memory_limit
配置說明
透過調大 Libeasy 可使用的最大記憶體來調大、發往單個 OBServer 的 RPC Packet 的排隊上限。
說明
由於
__xx_xx
格式的引數為隱藏引數,無法透過SHOW PARAMETERS
語句來查詢,您可以透過以下 SQL 語句檢視該引數。
obclient> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='__easy_memory_limit';
配置值
建議配置為
20G
。
配置示例
obclient>ALTER SYSTEM SET __easy_memory_limit = '20G' ;
__easy_memory_reserved_percentage
配置說明
與
__easy_memory_limit
配合使用,可以降低 Easy 佔用太多記憶體的風險。
說明
由於
__xx_xx
格式的引數為隱藏引數,無法透過SHOW PARAMETERS
語句來查詢,您可以透過以下 SQL 語句檢視該引數。
obclient> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='__easy_memory_reserved_percentage';
配置值
建議配置為
10
。
配置示例
obclient> ALTER SYSTEM SET __easy_memory_reserved_percentage = 10 ;
SQL 層及其他引數(叢集級引數)
enable_sql_operator_dump
配置說明
允許 SQL 層操作(例如,Hash Join)Dump 中間結果,避免因超出記憶體大小限制而報錯。
配置值
建議配置為
True
。
配置示例
obclient> ALTER SYSTEM SET enable_sql_operator_dump = true;
large_query_threshold
配置說明
調整大查詢的閾值。
配置值
建議配置為
100s
。
配置示例
obclient> ALTER SYSTEM SET large_query_threshold = '100s';
trace_log_slow_query_watermark
配置說明
調整日誌中記錄 Slow Query 的閾值。Slow Query 在批處理中普遍耗時較長,調大該值可以降低 Slow Query 的記錄數量。
配置值
建議配置為
10s
。
配置示例
obclient> ALTER SYSTEM SET trace_log_slow_query_watermark = '10s';
enable_sql_audit
配置說明
設定是否開啟 SQL 執行資訊的採集。關閉該配置項可以降低 CPU 資源消耗。
配置值
建議配置為
True
。
配置示例
obclient> ALTER SYSTEM SET enable_sql_audit=True;
autoinc_cache_refresh_interval
配置說明
調大自增列重新整理的頻率,可以減少效能損耗。
配置值
建議配置為
86400s
。
配置示例
obclient> ALTER SYSTEM SET autoinc_cache_refresh_interval='86400s';
enable_perf_event
配置說明
設定是否開啟效能監控資訊採集。關閉該配置項可以降低 CPU 資源消耗,提升效能,但是會丟失監控資訊。
配置值
建議配置為
True
。
配置示例
obclient> ALTER SYSTEM SET enable_perf_event=True;
SQL 層及其他引數(租戶級引數)
ob_enable_batched_multi_statement
配置說明
設定是否啟用批處理功能的成組執行最佳化。
配置值
建議配置為
True
。
配置示例
obclient>ALTER SYSTEM SET ob_enable_batched_multi_statement = True;
SQL 層及其他引數(系統變數)
ob_sql_work_area_percentage
配置說明
調大租戶的 SQL 層可使用的記憶體空間佔比。
配置值
建議配置為
30
。
配置示例
obclient> SET GLOBAL ob_sql_work_area_percentage = 30;
ob_query_timeout
配置說明
增大查詢的超時時長。
配置值
建議配置為
3600000000
,表示 3600 秒。
配置示例
obclient> SET GLOBAL ob_query_timeout = 3600000000;
ob_trx_idle_timeout
配置說明
增大事務空閒超時時長。
配置值
建議配置為
300000000
,表示 300 秒。
配置示例
obclient> SET GLOBAL ob_trx_idle_timeout = 300000000;
ob_trx_timeout
配置說明
增大事務超時時長。
配置值
建議配置為
2400000000
,表示 2400 秒。
配置示例
obclient> SET GLOBAL ob_trx_timeout = 2400000000;
parallel_servers_target
配置說明
提高 PX 的並行度的上限。
配置值
建議配置為
900
。
配置示例
obclient> SET GLOBAL parallel_servers_target = 900;
max_allowed_packet
配置說明
調整最大網路包大小。
說明
該變數不能透過
ALTER SESSION SET xxx = yyy;
語句的方式使其僅在當前 Session 生效,只能透過SET GLOBAL xxx = yyy
語句這種全域性生效的修改方式。 使用時一般客戶端與 Server 端均需要調整。
配置值
建議配置為
41943040
。
配置示例
obclient> SET GLOBAL max_allowed_packet = 41943040;
OBProxy 相關引數
enable_compression_protocol
配置說明
關閉壓縮,減少 OBProxy 對 CPU 的佔用。需要重啟 OBProxy 機器才能生效。
配置值
建議配置為
False
。
配置示例
obclient> ALTER PROXYCONFIG SET enable_compression_protocol = False;
automatic_match_work_thread
配置說明
開啟自動計算執行緒個數。需要重啟 OBProxy 機器才能生效。
配置值
建議配置為
True
。
配置示例
obclient> ALTER PROXYCONFIG SET automatic_match_work_thread = True;
monitor_log_level
配置說明
設定監控日誌的列印級別。
配置值
建議配置為
ERROR
。
配置示例
obclient> ALTER PROXYCONFIG SET monitor_log_level = 'ERROR';
xflush_log_level
配置說明
設定 xflush 日誌的日誌列印級別。
配置值
建議配置為
ERROR
。
配置示例
obclient> ALTER PROXYCONFIG SET xflush_log_level="ERROR";
syslog_level
配置說明
設定系統日誌的日誌列印級別。
配置值
建議配置為
ERROR
。
配置示例
obclient> ALTER PROXYCONFIG SET sys_log_level="ERROR";
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026075/viewspace-2932554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker 配置引數參考Docker
- OceanBase學習之路49|最小資源引數配置是什麼?
- OceanBase學習之路51|常用的系統配置引數及系統變數有哪些?變數
- OceanBase學習之路50|預設生產引數的建議配置是什麼?
- OceanBase學習之路53|多租戶管理引數如何設定?
- OceanBase學習之路54|如何配置多租戶管理?
- mybatis學習參考MyBatis
- 【文章筆記】效能最佳化技巧參考筆記
- JavaScript Math(數學) 參考JavaScript
- OceanBase學習之路45|如何檢視資源單元配置?
- WebApiClient效能參考WebAPIclient
- Vue學習(四)元件(參考)Vue元件
- APEX學習資料參考
- ai學習參考路線AI
- MySQL效能最佳化之Open_Table配置引數的合理配置建議MySql
- OceanBase學習之路9|連線方式概述
- OceanBase學習之路15|體驗 Operational OLAP
- OceanBase學習之路44|修改資源單元配置有什麼方法??
- JVM引數設定的一些參考方法JVM
- golang學習之路之函式可變引數Golang函式
- OceanBase學習之路6|透過 Obclient 連線 OceanBase 租戶client
- 神經網路學習參考神經網路
- postgresql配置引數最佳化SQL
- JavaSE 學習參考:方法的基本概念Java
- mysqldump常見使用場景及引數參考MySql
- 9i Dataguard (Standby) 引數設定參考
- OceanBase學習之路3 |SpringJDBC 連線示例SpringJDBC
- Elasticsearch常用配置及效能引數Elasticsearch
- OceanBase學習之路52|如何透過系統變數進行設定?變數
- 嵌入式學習參考資料
- vue學習資源(參考連結)Vue
- Google 的 Java 編碼規範,參考學習!GoJava
- 給軟體工程師的學習參考薦軟體工程工程師
- 詳情頁產品引數模組設計參考
- EBS R12 資料庫初始引數參考資料庫
- OceanBase學習之路5|C 應用程式連線 OceanBase 資料庫資料庫
- OceanBase學習之路8|Java 應用程式連線 OceanBase 資料庫Java資料庫
- OceanBase學習之路4|SpringBoot 連線示例Spring Boot