Oceanbase 4.5.0 如果有大事务租户CLOG就不能被清理?可是我的实验clog一直达不到使用率95%
我在租户上写了一个存储过程循环插入数据,把AUTOCOMMIT已经设置成了0
循环插入的语句如下:
insert into test1 select * from test;
test表中有12万条数据
可是使用百分比一直超不过50%
Oceanbase 4.5.0 如果有大事务租户CLOG就不能被清理?可是我的实验clog一直达不到使用率95%
我在租户上写了一个存储过程循环插入数据,把AUTOCOMMIT已经设置成了0
循环插入的语句如下:
insert into test1 select * from test;
test表中有12万条数据
可是使用百分比一直超不过50%
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;
clog_base_lsn
2.OceanBase 在 CLOG 压力大时,会尽量把 checkpoint 往当前日志尾部推(把已落盘、已 flush 的部分变成可回收:
边界仍受未提交事务的 min_start_scn 限制,但在长事务持续写入时,已 flush 的前段仍可能被回收,所以物理占用不会随 FLUSHED_LOG_SIZE 同比例一直涨。
继续努力学习中
6666
666
十分详细。
xuexi
看完这篇文章,我对这个话题有了新理解。
学习