OceanBase學習之路48|最佳效能引數的配置參考

老樹樁12發表於2023-01-18

本節主要從硬體配置、通用引數、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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章