Oceanbase 4.5.0 如果有大事务租户CLOG就不能被清理?可是我的实验clog一直达不到使用率95% 麻烦官方看下

Oceanbase 4.5.0 如果有大事务租户CLOG就不能被清理?可是我的实验clog一直达不到使用率95%

我在租户上写了一个存储过程循环插入数据,把AUTOCOMMIT已经设置成了0

循环插入的语句如下:
insert into test1 select * from test;
test表中有12万条数据

可是使用百分比一直超不过50%

7 个赞

OceanBase 社区已接收您的帖子,正在跟进中。

总结一下 步骤
– 步骤 1:清场
KILL <所有悬挂 session_id>;

– 步骤 2:调参
ALTER SYSTEM SET log_disk_utilization_threshold = 20 TENANT = ‘tenant1’;
ALTER SYSTEM SET log_disk_utilization_limit_threshold = 95 TENANT = ‘tenant1’;
ALTER SYSTEM SET log_disk_throttling_percentage = 100 TENANT = ‘tenant1’;
SET ob_query_timeout = 86400000000;
SET ob_trx_timeout = 86400000000;
SET ob_pl_block_timeout = 86400000000;

– 步骤 3:多 session 依次执行
SET autocommit=0; START TRANSACTION; CALL insertdata();

– 步骤 4:监控直到 95% 或停写
SELECT ROUND(log_disk_in_use/log_disk_size*100, 2) AS pct,
log_disk_in_use/1024/1024 AS used_mb,
log_disk_size/1024/1024 AS total_mb
FROM oceanbase.gv$ob_units WHERE tenant_id = 1002;


刚才43%,现在又23%了



涨上去以后 还是会下降 维持在23%这样

  1. 不可回收日志达到租户 CLOG 总量约 30% 时,会触发 flush:
    不可回收日志 ≥ 30% → flush memtable → 尝试推进 checkpoint → 回收已 flush 的部分
    长事务未提交时,事务起点之后的日志不能回收,但系统仍会:
    • 把 memtable 数据刷到 SSTable
    • 在允许范围内推进 clog_base_lsn
    • 回收已经 checkpoint、且不再依赖的日志块
      事务还在写,物理占用却稳定甚至下降

2.OceanBase 在 CLOG 压力大时,会尽量把 checkpoint 往当前日志尾部推(把已落盘、已 flush 的部分变成可回收:
边界仍受未提交事务的 min_start_scn 限制,但在长事务持续写入时,已 flush 的前段仍可能被回收,所以物理占用不会随 FLUSHED_LOG_SIZE 同比例一直涨。

3 个赞

继续努力学习中

6666

666

十分详细。

xuexi

看完这篇文章,我对这个话题有了新理解。

学习