暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase笔记1:常用的系统配置参数及系统变量

原创 橙子君是谁 2023-01-16
280

本节主要介绍 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='';
      复制
最后修改时间:2023-01-16 17:08:18
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论