
众所周知,数据库的部署和使用需要遵守一定的规范,如果使用不当可能会导致非预期的问题;本文重点介绍 OceanBase 数据库在生产环境中的一些最佳实践、注意事项和推荐配置,避免大家在使用过程中因不当操作造成非必要的踩坑。

sudo clockdiff $IP
ALTER SYSTEM SET writing_throttling_trigger_percentage=75 tenant=all(或者具体 tenantname);
租户的 CPU 和内存规格比例建议不低于 1:4,否则会导致租户内存满。 普通租户的最小内存必须大于 5G。 租户内存太小时建议调大ob_sql_work_area_percentage 变量ob_sql_work_area_percentage 默认值为 5%。租户内存小于 10G 时建议将 ob_sql_work_area_percentage 设置为 20% 左右。 分区数量受内存限制,每个副本预留内存为 168 KB,因此 10000 个副本至少需要预留 1.68 G 内存,即 1 G 的租户最多能建约六千个分区。建议您根据分区数设置租户内存。 物理内存使用限制 memstore_limit_percentage 参数的默认值为 50。如果您的服务器内存大于 256 G,建议您将 memstore_limit_percentage 参数设置为 80。如果您的服务器内存小于 256 G,建议您采用默认配置。执行以下命令,设置 memstore_limit_percentage 参数: ALTER SYSTEM SET memstore_limit_percentage = '80';
memory_limit_percentage 的默认值为 80,如果您的服务器内存大于 256 G,建议您将 memory_limit_percentage 参数设置为 90。执行以下命令,设置 memory_limit_percentage 参数:
ALTER SYSTEM SET trace_log_slow_query_watermark = '1s';
-- CPU 并发度参数,建议配置为 4,arm 系统为 2ALTER SYSTEM SET cpu_quota_concurrency = '4';-- 资源软负载开关,控制资源均衡水位,默认为 50%,即 CPU 内存使用超过 50% 就进行 unit 均衡,线上建议调整为 100,达到手工控制 unit 分布的效果ALTER SYSTEM SET resource_soft_limit = '100';
-- 配置转储 50 次ALTER SYSTEM SET minor_freeze_times = 50;-- 转储触发水位百分比,建议 256 G 以上配置调整为 70,256 G 以下调整为 60ALTER SYSTEM SET freeze_trigger_percentage = '60';-- 数据拷贝并发为 100ALTER SYSTEM SET data_copy_concurrency = 100;-- 服务器上数据传出并发为 10ALTER SYSTEM SET server_data_copy_out_concurrency = 10;-- 服务器上数据传入并发为 10ALTER SYSTEM SET server_data_copy_in_concurrency = 10;-- 转储预热时间,默认 30s,设置了会延后转储释放的时间,改成 0sALTER SYSTEM SET minor_warm_up_duration_time = '0s';-- 配置 chunk 内存大小(建议保持默认值 0,OceanBase 自行分配)ALTER SYSTEM SET memory_chunk_cache_size = 0;-- 最大包括版本数量,影响磁盘可用空间,默认为 2,将多保留一个版本的数据在数据盘中,需调整为 1ALTER SYSTEM SET max_kept_major_version_number = '1';ALTER SYSTEM SET max_stale_time_for_weak_consistency = '2h';
ALTER SYSTEM SET clog_sync_time_warn_threshold = '1s';ALTER SYSTEM SET trx_try_wait_lock_timeout = '0ms';(默认值为 0ms,无需修改)-- 建议关闭一阶段提交,该参数值默认是 falseALTER SYSTEM SET enable_one_phase_commit='False';
ALTER SYSTEM SET data_copy_concurrency=40;ALTER SYSTEM SET server_data_copy_out_concurrency=20;ALTER SYSTEM SET server_data_copy_in_concurrency=20;
-- (默认就是 zstd_1.0,无需修改), 不过系统支持多种压缩算法ALTER SYSTEM SET default_compress_func = 'zstd_1.0';
ALTER SYSTEM SET autoinc_cache_refresh_interval = '43200s';
-- Prepared Statement 参数,不用 java 建联的配置建议设为 0ALTER SYSTEM SET _ob_enable_prepared_statement = 0;
ALTER SYSTEM SET server_permanent_offline_time = '7200s';-- 公有云建议 5M,生产环境建议 5M,否则建议默认值 30MALTER SYSTEM SET syslog_io_bandwidth_limit = '5M';
ALTER TENANT SET PRIMARY_ZONE = 'zone_name1;zone_name2,zone_name3';
ALTER TENANT SET PRIMARY_ZONE = 'zone_name1,zone_name2,zone_name3';
-- 最大并发度,默认 32,有大查询业务的建议调整为 128SET GLOBAL ob_max_parallel_degree = 128;/*parallel_max_servers 推荐设置为测试租户分配的 resource unit cpu 数的 10 倍如测试租户使用的 unit 配置为:create resource unit $unit_name max_cpu 26那么该值设置为 260parallel_server_target 推荐设置为 parallel_max_servers * 机器数*0.8那么该值为 260*3*0.8=624*/SET GLOBAL parallel_max_servers=260;SET GLOBAL parallel_servers_target=624;
-- 回收站参数,DDL 执行频率过大的场景一定要关闭,避免ddl执行过多引起租户性能异常SET GLOBAL recyclebin = 0;-- truncate回滚参数,truncate执行频率过大的场景一定要关闭SET GLOBAL ob_enable_truncate_flashback = 0;
ALTER proxyconfig SET sock_option_flag_out = 2; -- 2 代表 keepaliveALTER proxyconfig SET server_tcp_keepidle = 5; -- 启动 keepalive 探活前的空闲时间,5 秒ALTER proxyconfig SET server_tcp_keepintvl = 5; -- 两个 keepalive 探活包之间的时间间隔,5 秒ALTER proxyconfig SET server_tcp_keepcnt = 2; -- 最多发送多少个 keepaliv e包,2 个。最长 5+5*2=15 秒发现 dead_socketALTER proxyconfig SET server_tcp_user_timeout = 5; -- 等待 TCP 层 ACK 确认消息的超时时长,5 秒


往期推荐



文章转载自OceanBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




