代码之家  ›  专栏  ›  技术社区  ›  Szymon Lipiński

Oracle线程和进程

  •  4
  • Szymon Lipiński  · 技术社区  · 15 年前

    在这里: 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 无论系统如何。

    为什么日志编写器和数据库编写器被实现为进程…查询的执行是使用线程(Windows)或进程(Unix)完成的。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Gary Myers    15 年前

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

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

    threads cannot 访问存储器 属于另一个进程,该进程 保护进程不被 被另一个进程损坏。

    因此,在Windows中,Oracle必须是具有多个线程的单个进程。 在支持进程间内存共享的操作系统上,Oracle作为多进程体系结构工作并将进程管理留给操作系统的工作就更少了。

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

        2
  •  1
  •   Community CDub    8 年前

    看到我之前发布的这个答案,和这个问题的思路类似。 What is process and thread? '.Windows以这种方式广泛使用线程。与基于*nix/linux的基于线程的系统不同。在这里也可以看到,这个链接是一个直接链接(嵌入在我给出的第一个链接中)到 explanation 我介绍了Linux如何划分线程和进程。

    希望这有帮助, 最好的问候, 汤姆。