本文介绍 OceanBase 数据库 V4.x 性能调优参数。 不同的测试(功能测试/性能测试/压力测试等)以及 OLTP/OLAP/HTAP 等不同场景下,需要修改的参数/变量有所不同。 由于与性能相关的参数和变量较多,为方便操作,一般优化对性能影响较大的参数即可。 以下为各步骤简介,以便于更直观地理解。
| 步骤名称 | 步骤简介 | 功能测试/适配测试 | 性能测试/压力测试/POC 测试 |
|---|---|---|---|
| 第一步 功能参数调优 | 优化一般功能测试参数 | 需要 | 需要 |
| 第二步 性能参数基础调优 | 优化对性能影响较大的参数 | 不需要 | 需要 |
| 第三步 性能参数精简调优 | 关闭不必要的信息收集 | 不需要 | 需要 (全部调优完成后) |
| 第四步 性能参数极致调优 | 优化性能相关的大部分参数 | 不需要 | 可选 |
| 第五步 恢复参数值 | 避免不必要的问题 | 不需要 | 必须 |
除特别注明外,一般都适用于 OceanBase 数据库 V4.2.1 LTS/V4.2.5 LTS 和 OceanBase 数据库 V4.3.5 LTS。 此文档仅限测试环境(如性能测试、压力测试、POC 测试等环境)使用,生产环境参数设置请咨询 OceanBase 数据库技术支持团队人员。 建议通过 OCP 修改所有参数(首次修改隐藏参数除外),以保留完整的参数修改历史记录,以便后续排查问题。 性能测试/压力测试等完成后,需要根据第五步恢复参数值,以避免不必要的问题。
详细说明
数据库连接串示例
由于修改 OBProxy 参数、集群参数和租户参数数据库连接串不同,特提供以下数据库连接串示例供参考。
修改 OBProxy 参数数据库连接串示例。
(推荐)修改 OBProxy 参数数据库连接串示例如下,通过
root@sys(即连接 sys 租户)连接,本文正文中以此连接串作为示例。# 连接串一 (sys 租户数据库连接串,推荐) mysql -h10.10.20.20 -P2883 -uroot@sys#obcluster -Doceanbase -pxxx也可以使用 OBProxy 专用连接串,通过
root@proxysys连接。# OBProxy 专用连接串 (推荐使用连接串一) mysql -h10.10.20.20 -P2883 -uroot@proxysys#obcluster -Doceanbase -pxxx修改 OBServer 集群参数数据库连接串示例。
通过
root@sys(即连接 sys 租户)连接。# 连接串一 (sys 租户数据库连接串) mysql -h10.10.20.20 -P2883 -uroot@sys#obcluster -Doceanbase -pxxx修改 OceanBase 数据库 MySQL 租户(用户租户)OBServer 参数数据库连接串示例。
# 连接串二(MySQL 租户数据库连接串) mysql -h10.10.20.20 -P2883 -uroot@obmysql#obcluster -pxxx修改 OceanBase 数据库 Oracle 租户(用户租户)OBServer 参数数据库连接串示例。
# 连接串三(Oracle 租户数据库连接串) obclient -h10.10.20.20 -P2883 -uSYS@oboracle#obcluster -pxxx
参数和变量相关权限
MySQL 租户。
管理员用户 (root) 已有相关权限。 普通用户(以用户名为 alvin 为例)设置/查询参数和变量需要如下权限:
GRANT SELECT ON oceanbase.* to alvin; GRANT ALTER SYSTEM ON *.* TO 'alvin'@'%';或
GRANT SUPER ON *.* TO 'alvin'@'%';Oracle 租户。
管理员用户(SYS)已有相关权限。 普通用户 (以用户名为 ALVIN 为例) 设置/查询参数和变量需要如下权限:
GRANT SELECT ANY DICTIONARY TO ALVIN; GRANT ALTER SYSTEM TO ALVIN;或
GRANT DBA TO ALVIN;
查询参数和变量
在操作前建议查询当前参数值后备份,以便于后续恢复参数和变量或定位问题。 相关视图详情可参见:OceanBase 数据库各个版本中参数和变量相关的系统视图。
查询参数 SQL
OceanBase 数据库 V4.x 可通过如下 SQL 查询,MySQL 租户在 OceanBase 数据库下查询,Oracle 租户可在任意用户下查询。
SELECT scope,tenant_id,name,value,section,default_value,isdefault,edit_level,count(1) zones FROM gv$ob_parameters WHERE name IN ('bf_cache_priority','_bloom_filter_ratio','default_auto_increment_mode','default_load_mode','default_table_merge_engine','default_table_organization','default_table_store_format','direct_load_allow_fallback','enable_async_syslog','enable_cgroup','_enable_defensive_check','enable_early_lock_release','_enable_filter_reordering','enable_monotonic_weak_read','_enable_newsort','enable_record_trace_log','enable_syslog_recycle','freeze_trigger_percentage','_io_callback_thread_count','_io_read_batch_size','_io_read_redundant_limit_percentage','large_query_threshold','_lcl_op_interval','log_transport_compress_all','max_syslog_file_count','memory_chunk_cache_size','memory_limit_percentage','memstore_limit_percentage','micro_block_merge_verify_level','minor_compact_trigger','_nested_loop_join_enabled','ob_compaction_schedule_interval','ob_enable_batched_multi_statement','open_cursors','syslog_io_bandwidth_limit','_trace_control_info','trace_log_slow_query_watermark','use_large_pages','user_block_cache_priority','weak_read_version_refresh_interval','writing_throttling_trigger_percentage') GROUP BY scope,tenant_id,name,value,section,edit_level,isdefault,default_value ORDER BY isdefault,tenant_id,name;
查询变量 SQL
查询变量方式一:MySQL 租户和 Oracle 租户统一标准视图
OceanBase 数据库 V4.2.2+/V4.3.1+ 可通过如下 SQL 查询,MySQL 租户在 OceanBase 数据库下查询,Oracle 租户可在任意用户下查询。
-- OceanBase 数据库 V4.2.2+/V4.3.1+ MySQL 租户/Oracle 租户全局变量
SELECT name,value,scope,default_value,isdefault from dba_ob_sys_variables WHERE name in ('binlog_row_image','max_allowed_packet','ob_query_timeout','ob_sql_work_area_percentage','ob_trx_idle_timeout','ob_trx_timeout','parallel_degree_limit','parallel_degree_policy','parallel_min_scan_time_threshold','parallel_servers_target') ORDER BY isdefault,name;
查询变量方式二:MySQL 租户专用视图或 Oracle 租户专用视图
OceanBase 数据库 V4.x MySQL 租户可通过如下方式查询。
-- OceanBase 数据库 V4.x MySQL 租户全局变量
SELECT variable_name,variable_value from information_schema.global_variables WHERE variable_name in ('binlog_row_image','max_allowed_packet','ob_query_timeout','ob_sql_work_area_percentage','ob_trx_idle_timeout','ob_trx_timeout','parallel_degree_limit','parallel_degree_policy','parallel_min_scan_time_threshold','parallel_servers_target') ORDER BY variable_name;
OceanBase 数据库 V4.x Oracle 租户可通过如下方式查询。
-- OceanBase 数据库 V4.x Oracle 租户全局变量
SELECT variable_name,value from sys.tenant_virtual_global_variable WHERE variable_name in ('binlog_row_image','max_allowed_packet','ob_query_timeout','ob_sql_work_area_percentage','ob_trx_idle_timeout','ob_trx_timeout','parallel_degree_limit','parallel_degree_policy','parallel_min_scan_time_threshold','parallel_servers_target') ORDER BY variable_name;
第一步:功能参数调优
适用于功能测试、性能测试和压力测试等场景。 此步骤主要优化确保一般功能测试或适配测试能正常进行的参数。 功能测试仅设置此步骤参数即可。
OBServer 参数调优
用户租户参数和变量
提示:使用上述连接串二或三修改用户租户参数和变量。
OceanBase 数据库 V4.x 通用集群调优参数和变量:
-- 设置 SQL 工作区内存占整个租户内存百分比, 默认值 5
SET GLOBAL ob_sql_work_area_percentage=10;
-- 设置最大网络包的大小, 默认值 16777216 (16KB), 单位为 Byte
SET GLOBAL max_allowed_packet=67108864;
-- 设置 SQL 最大执行时间, 默认值 10000000 (10s), 单位为微秒
SET GLOBAL ob_query_timeout=3600000000;
-- 设置事务超时时间, 默认值 86400000000 (24h), 单位为微秒
SET GLOBAL ob_trx_timeout=86400000000;
-- 设置事务空闲超时时间, 默认值 86400000000 (24h), 单位为微秒
SET GLOBAL ob_trx_idle_timeout = 86400000000;
-- 单个 Session 可以同时打开的游标数量, 默认值 50
ALTER SYSTEM SET open_cursors=1500;
-- 是否启用批处理多条语句的功能, 默认值 false
ALTER SYSTEM SET ob_enable_batched_multi_statement=true;
注意:全局 (GLOBAL) 变量设置后,对于新数据库连接生效。
第二步:性能参数基础调优
适配场景:性能测试/压力测试中需要排查或优化 Top SQL/Slow SQL、发现并解决测试过程中遇到的问题等。 此步骤主要优化对性能影响较大的参数。 如 OceanBase 数据库版本为 V4.3.x 且使用 OCP V4.3.x,建议使用 OCP 参数模板功能,在创建集群和租户页面选择"负载类型"后将自动选择相应的参数模板,从而基于不同的场景设置不同的参数,以满足不同负载场景的性能和功能需求,详情参见:配置最佳实践。
对于 OceanBase 数据库 V4.3.x,本文主要考虑如下四种场景:
Express OLTP:适用于贸易、支付核心系统、互联网高吞吐量应用程序等工作负载,无外键约束、无存储过程、无长事务、无大事务。
Complex OLTP:适用于银行、保险系统等工作负载。它们通常具有复杂的联接、复杂的相关子章询、用 PL 编写的批处理作业,以及长事务。
HTAP:适用于混合 OLAP 和 OLTP 工作负载。通常用于从活动运营数据、欺诈检测和个性化建议中获取即时见解。
OLAP:适用于实时数据仓库分析场景。
OBProxy 参数调优
提示:推荐使用上述连接串一修改 OBProxy 参数。 主要 OBProxy 参数调优如下:
-- 设置 OBProxy 运行时内存上限, 默认值 2G
ALTER PROXYCONFIG SET proxy_mem_limited='4G';
-- 控制是否开启压缩协议,默认值 true
ALTER PROXYCONFIG SET enable_compression_protocol=false;
OBServer 参数调优
集群参数调优
提示:使用上述连接串一修改集群参数。 OceanBase 数据库版本 V4.x 通用集群调优参数:
-- 设置 OBServer 总可用内存大小占总内存大小的百分比, 默认值 80
ALTER SYSTEM SET memory_limit_percentage = 90;
-- MemStore 占租户的内存比, 默认值 50/0
ALTER SYSTEM SET memstore_limit_percentage = 60;
-- 控制 OBServer 节点是否开启 cgroup 功能, 默认值 true
ALTER SYSTEM SET enable_cgroup = false;
-- 是否启用防御性检查, 默认值 1
ALTER SYSTEM SET _enable_defensive_check = 0;
-- 是否启用 sort 算子优化, 默认值 true
ALTER SYSTEM SET _enable_newsort = false;
OceanBase 数据库 V4.x 通用集群调优参数(OceanBase 数据库 V4.3.x 建议通过 OCP 参数模板自动设置):
-- 设置是否记录追踪日志, 默认值 true
ALTER SYSTEM SET enable_record_trace_log = false;
-- 设置查询的执行时间阈值,如果查询的执行时间超过该阈值,则被认为是慢查询,慢查询的追踪日志会被打印到系统日志中, 默认值 1s
ALTER SYSTEM SET trace_log_slow_query_watermark = '10s';
-- 一个查询执行时间超过该阈值会被判断为大查询,执行大查询调度策略, 默认值 5s
ALTER SYSTEM SET large_query_threshold = '5s';
-- 开启系统日志回收, 默认值 false
ALTER SYSTEM SET enable_syslog_recycle = true;
-- 设置在回收日志文件之前可以容纳的日志文件数量, 默认值 0,表示不会删除任何日志文件
ALTER SYSTEM SET max_syslog_file_count = 300;
OceanBase 数据库 V4.x Complex OLTP/HTAP 场景需要设置(OceanBase 数据库 V4.3.x 建议通过 OCP 参数模板自动设置):
-- 一个查询执行时间超过该阈值会被判断为大查询,执行大查询调度策略, 默认值 5s
ALTER SYSTEM SET large_query_threshold = '600s';
OceanBase 数据库 V4.3.x OLAP 场景需要设置(建议通过 OCP 参数模板自动设置):
-- 设置查询的执行时间阈值,如果查询的执行时间超过该阈值,则被认为是慢查询,慢查询的追踪日志会被打印到系统日志中, 默认值 1s
ALTER SYSTEM SET trace_log_slow_query_watermark = '7d';
-- 一个查询执行时间超过该阈值会被判断为大查询,执行大查询调度策略, 默认值 5s
ALTER SYSTEM SET large_query_threshold = '0ms';
用户租户参数和变量
提示:使用上述连接串二或三修改用户租户参数和变量。 OceanBase 数据库 V4.x 通用租户调优参数:
-- 设置 SQL 工作区内存占整个租户内存百分比, 默认值 5
SET GLOBAL ob_sql_work_area_percentage = 20;
-- 关闭全链路诊断功能
CALL dbms_monitor.ob_tenant_trace_disable();
注意:全局(GLOBAL)变量设置后,对于新数据库连接生效。
OceanBase 数据库 V4.3.x OLAP 场景需要设置 Auto DOP 相关参数:
-- 设置并行度选择策略,取值有 MANUAL(0) 和 AUTO(1), 默认值 MANUAL
SET GLOBAL parallel_degree_policy = AUTO;
-- 在 Auto DOP 策略中用于计算并行度的参数,即设置对基表扫描进行并行处理的最小评估执行时间, 默认值 1000,单位为 ms
SET GLOBAL parallel_min_scan_time_threshold = 10;
-- 租户 CPU 充足 (如 >= 64) 时,可以考虑调大如下两个参数
-- 设置每个 Server 上的并行查询排队条件, 默认值 0
-- 建议租户 CPU 的 10 倍, 如下以租户为 100 CPU 为例
SET GLOBAL parallel_servers_target=1000;
-- 设置在使用 Auto DOP 策略时,优化器选择并行度的上限值, 默认值 0, 表示对并行度不进行限制
-- 建议不超过租户 CPU 的 1/3, 如下以租户为 96 CPU 为例
SET GLOBAL parallel_degree_limit=32;
注意:全局(GLOBAL)变量设置后,对于新数据库连接生效。 OceanBase 数据库 V4.x 通用租户调优参数(OceanBase 数据库 V4.3.x 建议通过 OCP 参数模板自动设置):
-- 对日志传输是否使用压缩, 默认值 false
ALTER SYSTEM SET log_transport_compress_all = true;
如是 OceanBase 数据库 V4.3.5 Express OLTP/Complex OLTP 场景,需要设置(建议通过 OCP 参数模板自动设置):
MySQL 租户。
-- 控制存储层是否启用 filter 的重排序功能, 默认值 true ALTER SYSTEM SET _enable_filter_reordering = false;Oracle 租户。
-- 控制存储层是否启用 filter 的重排序功能, 默认值 true ALTER SYSTEM SET "_enable_filter_reordering" = false;
OceanBase 数据库 V4.3.x OLAP 场景需要设置(建议通过 OCP 参数模板自动设置):
MySQL 租户。
-- 对日志传输是否使用压缩, 默认值 false ALTER SYSTEM SET log_transport_compress_all = false; -- 指定用户租户默认创建表的格式, 默认值 row ALTER SYSTEM SET default_table_store_format = 'column'; -- 在导数操作场景中,控制数据的导入方式, 默认值 DISABLED ALTER SYSTEM SET default_load_mode = 'FULL_DIRECT_WRITE'; -- 控制在指定旁路导入的导数操作中,如果遇到旁路导入不支持的场景时,导数操作是否回退为普通导入的方式, 默认值 true ALTER SYSTEM SET direct_load_allow_fallback = false; -- 设置创建新表时默认的表组织模式, 默认值 INDEX ALTER SYSTEM SET default_table_organization = 'HEAP'; -- 一次读 IO 请求读取数据块大小的上限, 默认值 0K ALTER SYSTEM SET _io_read_batch_size = '128K'; -- 一次 IO 读请求中读取冗余数据块所占百分比上限, 默认值 0 ALTER SYSTEM SET _io_read_redundant_limit_percentage = 50; -- 控制是否启用 nested loop join, 默认值 true ALTER SYSTEM SET _nested_loop_join_enabled = false; -- OceanBase 数据库 V4.3.5.2+ -- 控制 IO callback 线程的数量, 默认值 0, 表示自动根据内存规格分配 ALTER SYSTEM SET _io_callback_thread_count = 64; -- OceanBase 数据库 V4.3.5.3+ -- 指定用户租户默认创建表的 merge_engine, 默认值 partial_update ALTER SYSTEM SET default_table_merge_engine = 'delete_insert'; -- 在保证正确性的前提下,尽量将子查询全部改写成连接形态, 默认值 false ALTER SYSTEM SET _force_subquery_unnest = true;Oracle 租户。
-- 对日志传输是否使用压缩, 默认值 false ALTER SYSTEM SET log_transport_compress_all = false; -- 指定用户租户默认创建表的格式, 默认值 row ALTER SYSTEM SET default_table_store_format = 'column'; -- 在导数操作场景中,控制数据的导入方式, 默认值 DISABLED ALTER SYSTEM SET default_load_mode = 'FULL_DIRECT_WRITE'; -- 控制在指定旁路导入的导数操作中,如果遇到旁路导入不支持的场景时,导数操作是否回退为普通导入的方式, 默认值 true ALTER SYSTEM SET direct_load_allow_fallback = false; -- 设置创建新表时默认的表组织模式, 默认值 INDEX ALTER SYSTEM SET default_table_organization = 'HEAP'; -- 一次读 IO 请求读取数据块大小的上限, 默认值 0K ALTER SYSTEM SET "_io_read_batch_size" = '128K'; -- 一次 IO 读请求中读取冗余数据块所占百分比上限, 默认值 0 ALTER SYSTEM SET "_io_read_redundant_limit_percentage" = 50; -- 控制是否启用 nested loop join, 默认值 true ALTER SYSTEM SET "_nested_loop_join_enabled" = false; -- OceanBase 数据库 V4.3.5.2+ -- 控制 IO callback 线程的数量, 默认值 0, 表示自动根据内存规格分配 ALTER SYSTEM SET "_io_callback_thread_count" = 64; -- OceanBase 数据库 V4.3.5.3+ -- 指定用户租户默认创建表的 merge_engine, 默认值 partial_update ALTER SYSTEM SET default_table_merge_engine = 'delete_insert'; -- 在保证正确性的前提下,尽量将子查询全部改写成连接形态, 默认值 false ALTER SYSTEM SET "_force_subquery_unnest" = true;
第三步:性能参数精简调优
适配场景:所有 Top SQL/Slow SQL 等均已完成优化,所有遇到的问题均已解决,需要进行最终的性能测试/压力测试,跑出数据库最佳性能。 本步骤主要关闭不必要的信息收集。
OBServer 参数调优
集群参数调优
提示:使用上述连接串一修改集群参数。 POC 最终正式测试阶段,所有 SQL 均已调优。
-- 设置是否开启 SQL 审计功能, 默认值 true
ALTER SYSTEM SET enable_sql_audit=false;
SELECT sleep(5);
-- 设置是否开启性能事件的信息收集功能, 默认值 true
ALTER SYSTEM SET enable_perf_event=false;
-- 设置系统日志级别, 默认值 WDIAG
ALTER SYSTEM SET syslog_level='PERF';
注意:此部分参数仅限性能测试/压力测试使用,测试完参数需要全部改回去,否则 SQL Audit 表将无新数据且影响 OCP Top SQL/Slow SQL 等信息收集。
第四步:性能参数极致调优
适配场景:所有 Top SQL/Slow SQL 等均已完成优化,所有遇到的问题均已解决,需要进行最终的性能测试/压力测试,跑出数据库最佳性能。 主要优化对性能有影响的绝大部分参数。 注意:此部分参数仅限性能测试/压力测试使用,测试完参数需要全部改回去以避免不必要的问题。
OBProxy 参数调优
提示:推荐使用上述连接串一修改 OBProxy 参数。
-- 是否启用集群名称校验, 默认值 true
ALTER PROXYCONFIG SET enable_cluster_checkout=false;
-- 是否开启压缩协议, 默认值 true
ALTER PROXYCONFIG SET enable_compression_protocol=false;
-- ODP 预执行请求执行时间阈值,超过阈值即打印一条告警日志, 默认值 2ms
ALTER PROXYCONFIG SET slow_proxy_process_time_threshold='500ms';
-- 不启用 Prometheus 监控, 默认值 true
ALTER PROXYCONFIG SET enable_prometheus=false;
如下 OBProxy 调优参数(默认参数值,一般不需要设置):
-- 是否开启异步日志, 默认值 true
ALTER PROXYCONFIG SET enable_async_log=true;
-- 控制 ODP 是否能够进行 QoS, 默认值 False
ALTER PROXYCONFIG SET enable_qos=false;
-- 不访问 OCP 的 MetaDB
ALTER PROXYCONFIG SET enable_metadb_used=false;
-- 不校验 OS 内核
ALTER PROXYCONFIG SET enable_strict_kernel_release=false;
-- 根据 CPU 核数自动创建工作线程
ALTER PROXYCONFIG SET automatic_match_work_thread=true;
-- 开启 OceanBase 2.0 协议
ALTER PROXYCONFIG SET enable_ob_protocol_v2=true;
OBServer 参数调优
集群参数调优
提示:使用上述连接串一修改集群参数。
-- 设置弱一致性读版本号的刷新周期, 默认值 100ms
ALTER SYSTEM SET weak_read_version_refresh_interval='2s';
-- 设置合并时宏块的校验级别, 0 表示关闭宏块校验, 默认值 2
ALTER SYSTEM SET micro_block_merge_verify_level=0;
-- 开启内存大页, 默认值 false
ALTER SYSTEM SET use_large_pages='true';
-- 设置数据块缓存在缓存系统中的优先级, 默认值 1
ALTER SYSTEM SET user_block_cache_priority=5;
-- 设置 Bloom Filter 缓存优先级, 默认值 1
ALTER SYSTEM SET bf_cache_priority = 10;
-- 关闭自动死锁检测, 默认值 30ms
ALTER SYSTEM SET _lcl_op_interval='0ms';
OceanBase 数据库 V4.x 通用场景(除 OLAP/HTAP 场景外) 需要设置:
-- 为频繁空查的宏块建立 bloomfilter 并缓存,减少磁盘 IO 和 CPU 消耗,提升写入性能, 默认值 35/3
ALTER SYSTEM SET _bloom_filter_ratio = 35;
OceanBase 数据库 V4.3.x OLAP/HTAP 场景需要设置:
-- 为频繁空查的宏块建立 bloomfilter 并缓存,减少磁盘 IO 和 CPU 消耗,提升写入性能, 默认值 35/3
ALTER SYSTEM SET _bloom_filter_ratio = 3;
以下参数保持默认值即可,一般不需要设置:
-- 设置内存分配器缓存的内存块容量, 默认值 0M, 表示系统自适应
ALTER SYSTEM SET memory_chunk_cache_size ='0M';
-- 设置系统日志所能占用的磁盘 IO 带宽上限, 默认值 30MB
ALTER SYSTEM SET syslog_io_bandwidth_limit='30MB';
-- 启用系统日志异步写, 默认值 true
ALTER SYSTEM SET enable_async_syslog=true;
用户租户参数和变量
提示:使用上述连接串二或三修改用户租户参数和变量。
-- 配置触发转储(Minor Compaction)的 SSTable 个数的阈值, 默认值 2
ALTER SYSTEM SET minor_compact_trigger=5;
-- 设置默认的自增列自增模式, 默认值 ORDER
ALTER SYSTEM SET default_auto_increment_mode='NOORDER';
-- 设置 Compaction 调度的时间间隔, 默认值 120s
ALTER SYSTEM SET ob_compaction_schedule_interval='3s';
-- 设置写入速度的阈值, 默认值 60
ALTER SYSTEM SET writing_throttling_trigger_percentage=90;
-- 设置触发冻结的租户使用 MemStore 内存的阈值百分比, 默认值 20
ALTER SYSTEM SET freeze_trigger_percentage = 60;
-- 控制是否记录全列日志, 取值有 MINIMAL(0) 和 FULL(2), 默认值 FULL
SET GLOBAL binlog_row_image='MINIMAL';
注意:全局 (GLOBAL) 变量设置后,对于新数据库连接生效。 以下参数已为默认值,一般不需要修改:
-- 优化热点行场景, 开启提前解行锁的功能, 此默认值 (true) 即可
ALTER SYSTEM SET enable_early_lock_release=true;
-- 关闭单调读, 此默认值 (False) 即可
ALTER SYSTEM SET enable_monotonic_weak_read = false;
第五步:恢复参数值
性能测试/压力测试等完成后,需要将以下参数或变量需要改回去以避免不必要的问题。 本文章节 第一步:功能参数调优 一般不需要恢复,其中参数根据实际情况设置即可。
恢复第二步参数
恢复 第二步:性能参数基础调优 以下集群参数,第二步中其他参数和变量根据需要调整即可。 提示:使用上述连接串一修改集群参数。
-- 控制 OBServer 节点是否开启 cgroup 功能, 默认值 true
ALTER SYSTEM SET enable_cgroup = false;
-- 是否启用防御性检查, 默认值 1
ALTER SYSTEM SET _enable_defensive_check = 1;
-- 是否启用 sort 算子优化, 默认值 true
ALTER SYSTEM SET _enable_newsort = true;
恢复第三步参数
恢复 第三步:性能参数精简调优 以下集群参数,否则 SQL Audit 表将无新数据且影响 OCP Top SQL/Slow SQL 等信息收集。 提示:使用上述连接串一修改集群参数。
-- 设置是否开启 SQL 审计功能, 默认值 true
ALTER SYSTEM SET enable_sql_audit=true;
SELECT sleep(5);
-- 设置是否开启性能事件的信息收集功能, 默认值 true
ALTER SYSTEM SET enable_perf_event=true;
-- 设置系统日志级别, 默认值 WDIAG
ALTER SYSTEM SET syslog_level='WDIAG';
恢复第四步参数
建议恢复 第四步:性能参数极致调优 参数和变量,以避免不必要的问题。
恢复 OBProxy 参数
提示:推荐使用上述连接串一修改 OBProxy 参数。
-- 是否启用集群名称校验, 默认值 true
ALTER PROXYCONFIG SET enable_cluster_checkout=true;
-- 是否开启压缩协议, 默认值 true
ALTER PROXYCONFIG SET enable_compression_protocol=true;
-- ODP 预执行请求执行时间阈值,超过阈值即打印一条告警日志, 默认值 2ms
ALTER PROXYCONFIG SET slow_proxy_process_time_threshold='2ms';
-- 不启用 Prometheus 监控, 默认值 true
ALTER PROXYCONFIG SET enable_prometheus=true;
恢复集群参数
提示:使用上述连接串一修改集群参数。
-- 设置弱一致性读版本号的刷新周期, 默认值 100ms
ALTER SYSTEM SET weak_read_version_refresh_interval='100ms';
-- 设置合并时宏块的校验级别, 0 表示关闭宏块校验, 默认值 2
ALTER SYSTEM SET micro_block_merge_verify_level=2;
-- 开启内存大页, 默认值 false
ALTER SYSTEM SET use_large_pages='false';
-- 设置数据块缓存在缓存系统中的优先级, 默认值 1
ALTER SYSTEM SET user_block_cache_priority=1;
-- 设置 Bloom Filter 缓存优先级, 默认值 1
ALTER SYSTEM SET bf_cache_priority = 1;
-- 关闭自动死锁检测, 默认值 30ms
ALTER SYSTEM SET _lcl_op_interval='30ms';
恢复用户租户参数和变量
提示:使用上述连接串二或三修改用户租户参数和变量。
-- 配置触发转储(Minor Compaction)的 SSTable 个数的阈值, 默认值 2
ALTER SYSTEM SET minor_compact_trigger=2;
-- 设置默认的自增列自增模式, 默认值 ORDER
ALTER SYSTEM SET default_auto_increment_mode='ORDER';
-- 设置 Compaction 调度的时间间隔, 默认值 120s
ALTER SYSTEM SET ob_compaction_schedule_interval='120s';
-- 设置触发冻结的租户使用 MemStore 内存的阈值百分比, 默认值 20
ALTER SYSTEM SET freeze_trigger_percentage = 20;
-- 设置写入速度的阈值, 默认值 60
ALTER SYSTEM SET writing_throttling_trigger_percentage=60;
-- 控制是否记录全列日志, 取值有 MINIMAL(0) 和 FULL(2), 默认值 FULL
SET GLOBAL binlog_row_image='FULL';
适用版本
OceanBase 数据库 V4.x 版本。