这些年Oracle发展的太快,我从12C之后就比较少参与运维工作,顶多帮着客户看看AWR报告,所以多Oracle 12C以后的很多细节实际上了解不多。搞了二十多年Oracle,从5.1用到11.2,Oracle 10G出来的时候,我就说这应该是我学习的最后一个版本的Oracle了。没想到没搂住,11G又搞了10年。12C后因为不怎么做一线运维了,所以就没怎么关注了。
前几天群里朋友在讨论PG WAL写入存在性能问题的时候。群里有个朋友就问,难道PG这么土,不支持多个WALWRITER并发写吗?我当时想都没想就说,Oracle也不支持啊,早期Oracle支持过LGWR SLAVER,不过因为BUG太多,没什么人用,到12C以后,好像就没有SLAVER这码子事儿了。当时那个朋友就蒙圈了,Oracle咋能不支持多个LGWR并发写呢?事后我问了问同事,他们说好像你记错了,12C之后Oracle所有的SLAVER都被统一改成WORKER了。在12C里LGWR worker是自动开启的。

昨天正好有点空,我找了一些关于12C LGWR worker的资料看了看。在公司的测试环境上也找了一套19.15的环境检查了一下。发现还真如同事所说,12C开始,Oracle已经自动开启LGWR并发写了。在12C里增加了LGnn进程,用于实际写入REDO数据,LGWR完全不管写Redo Log文件的事情,只负责发布一些和REDO落盘的消息了。
目前我看的关于LGWR worker的资料不多,从一些资料和我对LGWR的理解,LGWR worker应该是和Oracle Redo Strand有关的。Oracle的LGWR worker都是分配到GROUP的,GROUP的数量如果是和Redo public Strand相关,那么每个group就之间就不需要通过锁机制来同步写入工作。LGWR 也不需要在多个worker之间做协同,而仅仅需要

最低0.47元/天 解锁文章
1930

被折叠的 条评论
为什么被折叠?



