OceanBase學習之路51|常用的系統配置引數及系統變數有哪些?

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

本節主要介紹 OceanBase 資料庫使用過程中常用的系統配置引數及系統變數。

叢集級引數

  • memory_limit:用於配置 OBServer 最大可使用的總記憶體大小。當前該值無上限,如果設定的記憶體的最大上限超過了實際的實體記憶體總和,則會導致系統中其他按總記憶體計算的值偏大。

    • 預設值:0

    • 取值範圍:[0M, +∞)

    • 示例:

      obclient> ALTER SYSTEM SET memory_limit='50G';
  • system_memory:用於設定系統預留給租戶 ID 為  500 的租戶的記憶體容量。

    • 預設值:0M

    • 取值範圍:[0M, +∞)

    • 示例:

      obclient> ALTER SYSTEM SET system_memory='30G';
  • rootservice_memory_limit:用於設定 RootService 的最大記憶體容量限制。

    • 預設值:2G

    • 取值範圍:[2G, +∞)

    • 示例:

      obclient> ALTER SYSTEM SET rootservice_memory_limit='2G';
  • memstore_limit_percentage:用於設定租戶使用 MEMStore 的記憶體佔其總可用記憶體的百分比。

    • 預設值:50

    • 取值範圍:(0, 100)

    • 示例:

      obclient> ALTER SYSTEM memstore_limit_percentage=50;
  • trace_log_slow_query_watermark:用於設定查詢的執行時間閾值,如果查詢的執行時間超過該閾值,則被認為是慢查詢,慢查詢的追蹤日誌會被列印到系統日誌中。

    • 預設值:1s

    • 取值範圍:[1ms, +∞)

    • 示例:

      obclient> ALTER SYSTEM trace_log_slow_query_watermark='100ms';
  • enable_syslog_recycle:用於設定是否開啟回收系統日誌的功能。

    • 預設值:False

    • 取值範圍:True,False

    • 示例:

      obclient> ALTER SYSTEM enable_syslog_recycle=False;
  • max_syslog_file_count:用於設定在回收日誌檔案之前可以容納的日誌檔案數量。

    • 預設值:0

    • 取值範圍:[0, +∞)

    • 示例:

      obclient> ALTER SYSTEM max_syslog_file_count=0;
  • enable_sql_audit:用於設定是否開啟 SQL 審計功能。

    • 預設值:True

    • 取值範圍:True,False

    • 示例:

      obclient> ALTER SYSTEM enable_sql_audit=True;
  • datafile_disk_percentage:表示佔用  data_dir 所在磁碟(  data_dir 所在的磁碟將被 OceanBase 資料庫系統初始化用於儲存資料)總空間的百分比。

    • 預設值:0

    • 取值範圍:[0,99]

    • 示例:

      obclient> ALTER SYSTEM datafile_disk_percentage=90;
  • enable_rebalance:用於設定是否開啟自動負載均衡的功能。

    • 預設值:True

    • 取值範圍:True,False

    • 示例:

      obclient> ALTER SYSTEM enable_rebalance=True;
  • resource_hard_limit:用於分配 Unit。

    • 預設值:100

    • 取值範圍:(0, 10000]

    • 示例:

      obclient> ALTER SYSTEM resource_hard_limit=100;
  • stack_size:用於設定程式函式呼叫棧的大小。

    • 預設值:512K

    • 取值範圍:[512K, 20M]

    • 示例:

      obclient> ALTER SYSTEM stack_size='1M';
  • syslog_level:用於設定系統日誌的列印級別。

    • 預設值:INFO

    • 取值範圍:DEBUG,TRACE,INFO,WARN,USER_ERR,ERROR,PERF

    • 示例:

      obclient> ALTER SYSTEM syslog_level=INFO;

租戶級引數

  • freeze_trigger_percentage:用於設定觸發全域性凍結的租戶使用記憶體閾值。

    • 預設值:20

    • 取值範圍:(0, 100)

    • 示例:

      obclient> ALTER SYSTEM freeze_trigger_percentage=20;
  • major_compact_trigger:用於設定多少次小合併觸發一次全域性合併。

    • 預設值:0

    • 取值範圍:[0, 65535]

    • 示例:

      obclient> ALTER SYSTEM major_compact_trigger=5;
  • cpu_quota_concurrency:用於設定租戶的每個 CPU 配額所允許的最大併發數。

    • 預設值:4

    • 取值範圍:[1, 10]

    • 示例:

      obclient> ALTER SYSTEM cpu_quota_concurrency=4;
  • writing_throttling_trigger_percentage:用於設定寫入速度的閾值。當值為  100 時,表示關閉寫入限速機制。

    • 預設值:60

    • 取值範圍:[0, 100]

    • 示例:

      obclient> ALTER SYSTEM SET writing_throttling_trigger_percentage=100;
  • audit_trail:用於設定是否啟用資料庫稽核。

    • 預設值:NONE

    • 取值範圍:

      • NONE

      • OS

      • DB

      • DB,EXTENDED

      • DB_EXTENDED

    • 示例:

      obclient> ALTER SYSTEM SET audit_trail=NONE;
  • undo_retention:表示系統應保留的多版本資料範圍,單位為秒,在轉儲時控制多版本資料的回收。

    • 預設值:1800

    • 取值範圍:[0, 4294967295]

    • 示例:

      obclient> ALTER SYSTEM SET undo_retention=1800;

系統變數

  • recyclebin:用於設定是否開啟回收站功能。

    • 預設值:OFF

    • 取值範圍:

      • 1 或 ON

      • 0 或 OFF

    • 示例:

      obclient> SET GLOBAL recyclebin=OFF;

      或者

      obclient> SET GLOBAL recyclebin=0;
  • ob_query_timeout:用於設定查詢超時時間,單位是微秒。

    • 預設值:10000000

    • 取值範圍:N/A

    • 示例:

      obclient> SET GLOBAL ob_query_timeout=10000000;
  • ob_trx_idle_timeout:用於設定事務空閒超時時間,即事務中兩條語句之間的執行間隔超過該值時超時,單位為微秒。

    • 預設值:86400000000

    • 取值範圍:[100000000,+∞)

    • 示例:

      obclient> SET GLOBAL ob_trx_idle_timeout=120000000;
  • ob_trx_timeout:用於設定事務超時時間,單位為微秒。

    • 預設值:86400000000

    • 取值範圍:N/A

    • 示例:

      obclient> SET GLOBAL ob_trx_timeout=100000000;
  • ob_read_consistency:用於設定讀一致性級別。

    • 預設值:STRONG

    • 取值範圍:

      • 0:空字串

      • 1:FROZEN

      • 2:WEAK

      • 3:STRONG

    • 示例:

      obclient> SET GLOBAL ob_read_consistency=STRONG;

      或者

      obclient> SET GLOBAL ob_read_consistency=3;
  • ob_sql_work_area_percentage:用於 SQL 執行的租戶記憶體百分比限制。

    • 預設值:5

    • 取值範圍:[0, 100]

    • 示例:

      obclient> SET GLOBAL ob_sql_work_area_percentage=5;
  • parallel_servers_target:用於設定每個 Server 上的大查詢排隊條件。當並行執行(Parallel eXecution,PX)消耗的執行緒數超過大查詢排隊條件後,後繼並行執行需要排隊等待。

    • 預設值:0

    • 取值範圍:[0, 9223372036854775807]

    • 示例:

      obclient> SET GLOBAL parallel_servers_target=0;
  • max_allowed_packet:用於設定最大網路包大小,單位是 Byte。

    • 預設值:4194304

    • 取值範圍:[1024,1073741824]

    • 示例:

      obclient> SET GLOBAL max_allowed_packet=4194304;
  • nls_date_format:用於控制 Date 型別轉 Str 的格式,以及 Str 隱式轉 Date 的格式。

    說明

    該引數僅適用於 Oracle 模式。

    • 預設值:DD-MON-RR

    • 取值範圍:N/A

    • 示例:

      obclient> SET GLOBAL nls_date_format='DD-MON-RR';
  • autocommit:用於設定是否自動提交事務。

    • 預設值:ON

    • 取值範圍:

      • 1 或 ON

      • 0 或 OFF

    • 示例:

      obclient> SET GLOBAL autocommit=ON;

      或者

      obclient> SET GLOBAL autocommit=1;
  • ob_enable_plan_cache:用於設定是否開啟 Plan Cache。

    • 預設值:ON

    • 取值範圍:

      • 1 或 ON

      • 0 或 OFF

    • 示例:示例:

      obclient> SET GLOBAL ob_enable_plan_cache=ON;

      或者

      obclient> SET GLOBAL ob_enable_plan_cache=1;
  • ob_plan_cache_percentage:用於設定計劃快取可以使用的租戶記憶體資源的百分比。

    • 預設值:5

    • 取值範圍:[0, 100]

    • 示例:

      obclient> SET GLOBAL ob_plan_cache_percentage=5;
  • ob_sql_audit_percentage:用於設定 SQL Audit 記憶體上限佔當前租戶記憶體的百分比。

    • 預設值:3

    • 取值範圍:[0, 100]

    • 示例:

      obclient> SET GLOBAL ob_sql_audit_percentage=3;
  • ob_enable_sql_audit:用於控制當前租戶是否開啟 SQL Audit 功能。當取值為  False 時,全部租戶均不會開啟 SQL Audit 功能。

    • 預設值:True

    • 取值範圍:True,False

    • 示例:

      obclient> SET GLOBAL ob_enable_sql_audit=True;
  • transaction_isolation:用於設定事務的隔離級別。

    • 預設值:READ-COMMITTED

    • 取值範圍:READ-UNCOMMITTED ,READ-COMMITTED ,REPEATABLE-READ,SERIALIZABLE

    • 示例:

      obclient> SET GLOBAL transaction_isolation='READ-COMMITTED';
  • validate_password_check_user_name:用於設定使用者密碼是否可以和使用者名稱相同。取值為  ON 時,表示使用者密碼不可以和使用者名稱相同;取值為  OFF 時,表示使用者密碼可以和使用者名稱相同。

    • 預設值:OFF

    • 取值範圍:ON,OFF

    • 示例:

      obclient> SET GLOBAL validate_password_check_user_name=ON;
  • validate_password_length:用於設定使用者密碼最小長度。

    • 預設值:0

    • 取值範圍:[0,2147483647]

    • 示例:

      obclient> SET GLOBAL validate_password_length=0;
  • validate_password_mixed_case_count:用於設定使用者密碼至少包含的大寫字母個數以及至少包含的小寫字母個數。

    • 預設值:0

    • 取值範圍:[0,2147483647]

    • 示例:

      obclient> SET GLOBAL validate_password_mixed_case_count=0;
  • validate_password_number_count:用於設定使用者密碼至少包含的數字個數。

    • 預設值:0

    • 取值範圍:[0,2147483647]

    • 示例:

      obclient> SET GLOBAL validate_password_number_count=0;
  • validate_password_policy:用於設定密碼檢查策略。取值為  LOW 時,表示僅包含密碼常見的檢測;取值為  MEDIUM 時,表示包括密碼長度檢測、大寫字母個數檢測、小寫字母個數檢測、數字個數檢測、特殊字元個數檢測、使用者名稱密碼相同檢測。

    • 預設值:LOW

    • 取值範圍:LOW,MEDIUM

    • 示例:

      obclient> SET GLOBAL validate_password_policy=LOW;
  • validate_password_special_char_count:用於設定使用者密碼至少包含的特殊字元個數。

    • 預設值:0

    • 取值範圍:[0,2147483647]

    • 示例:

      obclient> SET GLOBAL validate_password_special_char_count=0;
  • resource_manager_plan:用於啟用資源管理計劃。指定不同計劃,會使用不同 CPU 的額度來限定資源組下的使用者活動。

    租戶內的普通執行緒和並行執行執行緒會相互搶佔 CPU 資源,透過為租戶指定資源隔離計劃,可以控制資源搶佔策略,限制資源的使用量。

    • 預設值:""

    • 取值範圍:N/A

    • 示例:

      每個租戶可以建立多套資源管理計劃(Resource Plan),例如:DAYTIME、NIGHT 等,您可以在不同時間段或不同的應用場景下啟用相應的計劃,以最大化系統效能。

      delimiter //
      # 定義 DAYTIME 資源管理計劃
      begin DBMS_RESOURCE_MANAGER.CREATE_PLAN(
        PLAN => 'DAYTIME');
      end; //
      begin DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
        PLAN => 'DAYTIME',
        GROUP_OR_SUBPLAN => 'interactive_group' ,
        COMMENT => 'TP 優先',
        MGMT_P1 => 30);
      end; //
      begin DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
        PLAN => 'DAYTIME',
        GROUP_OR_SUBPLAN => 'batch_group' ,
        COMMENT => '即使TP空負載,AP最多佔用 40% CPU 資源',
        MGMT_P1 => 20,
        UTILIZATION_LIMIT => 40);
      end; //
      # 定義 NIGHT 資源管理計劃
      begin DBMS_RESOURCE_MANAGER.CREATE_PLAN(
        PLAN => 'NIGHT');
      end; //
      begin DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
        PLAN => 'NIGHT',
        GROUP_OR_SUBPLAN => 'interactive_group' ,
        COMMENT => 'TP 資源最小化',
        MGMT_P1 => 10); 
      end; //
      begin DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
        PLAN => 'NIGHT',
        GROUP_OR_SUBPLAN => 'batch_group' ,
        COMMENT => 'TP空負載,AP最多佔用 90% CPU 資源',
        MGMT_P1 => 90,
        UTILIZATION_LIMIT => 90);
      end; //
      # 使用者名稱部分,test001 會被自動轉成大寫。如果希望保持小寫,則需要寫成 '"test001"'
      BEGIN
        DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING  
           (DBMS_RESOURCE_MANAGER.ORACLE_USER, 'test001', 'batch_group');
      END;//
      select * from DBA_RSRC_GROUP_MAPPINGS;// 
      # 白天時,執行該語句,啟用 DAYTIME 計劃,TP 優先
      SET GLOBAL resource_manager_plan='DAYTIME';
      # 夜晚時,執行該語句,啟用 NIGHT 計劃,批處理/AP 優先
      SET GLOBAL resource_manager_plan='NIGHT'; 
      # 禁用所有資源計劃,不作任何限制
      SET GLOBAL resource_manager_plan='';


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026075/viewspace-2932558/,如需轉載,請註明出處,否則將追究法律責任。

相關文章