SQL优化之checkpoint not complete
话说从前有一个从excel导入到数据库中的功能,近来该功能“超级”缓慢,严重影响生产活动。
从告警日志中,可以找到一些线索:日志切换非常频繁,出现多处checkpoint not complete。
同时,在系统中查询产生redo最多的会话,正是上面提到的那个功能,导入不到1w条数据,竟然累计产生近10G的redo!!!
到这里,已经有理由怀疑是这个功能出现的问题,导致过多的redo,进一步产生checkpoint not complete等待;
OK,10046,终于找到了问题的根源:不合理使用的物化视图
在导入功能相关的数据库表上,建有一个物化视图,我们知道物化视图刷新可以on commit,on demand,而这里使用了on commit,而且每次都是全刷新;更糟糕的是,导入功能是每条记录提交一次!
也就是说:每导入一条数据,物化视图需要清空,重新刷新数据。
解决思路:
- 物化视图刷新模式修改为on demand
- 物化视图全刷新变为快速刷新
- 导入数据使用分批提交方式
这是一个comment测试
这又是一个comment测试
haha
肯定不是我建的 MV
事实上,是客户自己建的@@