LGWR进程任务是非常频繁的,oracle为什么没有采用多进程

大哥大姐们有没有人讲详细点的,我想问下,LGWR进程任务是非常频繁的,oracle为什么没有采用多进程
最新回答
浅沫记忆

2025-03-02 00:42:27

oracle采用的是多线程模式,加快进程书写速度,但是没有采用多进程模式。
举个例子:上公交车。
(1)排队的速度可能比大家一拥而上要快。(现在硬盘的并口换为串口也能说明这个)
(2)一拥而上看起来快,但是如果前面出现“争门”(相当于两个进程争一个文件),那么后面的怎么办?只能卡在那里。(计算机中可没有司机大哥的一声吼)
(3)为了解决上车流量大(比如上下班高峰)问题,有两种办法:第一种就是增加车辆(相当于提高书写速度,这个现在有很多方法比如固态硬盘,内存硬盘等),不过车的价格比较高,而且除了上下班以外其他时间车次够用,那么就会造成浪费(所以一般除了必须以外,很少有大规模应用这种的,而且这个也不是软件可以解决的问题)。第二种办法就是增加上车的速度(增加线程),很多车辆有时会让从下车门上车,就是这个道理。
再说回进程。
进程都有优先级,频繁起停的进程,优先级别都不高,cpu不会对这类进程投放过多的关注,那么可能反而导致没什么操作的时候,数据库也会很慢。如果是同时开几个进程(就算不频繁起停),那么开多少合适?10个,20个,30个,同时写数据库的可能是上百个进程,总不能开上百个,那样我想128G的内存可能也不够用啊。而且并不是时刻都在用,也会造成浪费。
而且现在服务器最大的瓶颈是io,机械硬盘(现在最多的普通硬盘)的io是有限的,我遇到的实测中最高也就100MB左右(达不到似乎是97多),但是系统也做要写日志,记录运行状态等工作(就跟启动系统也要占据内存一样),那么还有多少能分给程序?而且磁盘不可能保持这个最高速度,那样磁盘会很快发热,然后寿命缩短,现在的磁盘损坏率本身就不低,如果再持续过热,我想一年换一遍是没什么问题的。
所以,就现阶段来说这么处理没有问题,当然将来可能有新的技术出来,可能会有多进程的情况,不过现在只能这样了。