Oracle线程和进程

时间:2010-02-26 17:04:47

标签: oracle

此处:http://download.oracle.com/docs/html/A95907_01/diff_uni.htm#1077398 我发现在Windows上,Oracle是基于线程的,而在Unix上,这是基于进程的。为什么会这样?

此外,无论系统如何,都有许多Oracle进程http://www.adp-gmbh.ch/ora/concepts/processes/index.html

为什么将日志编写器和数据库编写器实现为进程...并且使用线程(窗口)或进程(unix)完成查询执行。

2 个答案:

答案 0 :(得分:3)

Oracle利用SGA共享内存区域来存储所有会话/事务可访问(且必须)的信息。例如,当一行被锁定时,该锁定在内存中(作为行的属性),并且所有其他事务需要看到它被锁定。

在Windows中,线程无法访问其他进程的内存

  

threads cannot访问内存   属于另一个进程,其中   保护进程免受攻击   被另一个进程破坏了。

因此,在Windows中,Oracle必须是具有多个线程的单个进程。 在OS支持进程之间共享内存的情况下,Oracle作为多进程体系结构工作并将进程管理留给操作系统的工作量较少。

Oracle运行许多后台线程/进程来完成(或可以)与其他进程异步的工作。这样,即使其他进程/线程被阻塞或忙碌,这些也可以继续。

答案 1 :(得分:1)

请参阅我之前发布的与此问题“What is process and thread?”类似的答案。 Windows以这种方式广泛使用线程。与基于线程的基于* nix / Linux的系统不同。并且在这里也看到,这个链接是一个直接链接(嵌入在我给出的第一个链接中)到explanation我给出的关于Linux时间划分线程和进程的方式。

希望这有帮助, 最好的祝福, 汤姆。