DB2 9.5 中多线程架构的工作原理

DB2® 9.5 for Linux®, UNIX®, and Windows®(代号为 “Viper 2”)中引入了新的多线程功能。了解当您需要经常性地监视进程或线程、需要理解数据库正在使用多少内存,或者当您需要简化备份、恢复和前滚等任务关键型工作时,DB2 9.5 中的新功能如何提供帮助。您将了解到这些新特性如何影响配置参数,并学习 DB2 9.5 中的新技术。

简介

为了理解 DB2 9.5 中新的多线程功能,本文首先讨论 DB2 进程模型。整个 DB2 进程模型是由 Base System Utilities(BSUs)控制的。BSU 为实例和数据库分配内存,拦截和处理信号,并处理发送到 DB2 的异常。图 1显示了用于 Linux 和 UNIX 平台的旧的 DB2 进程模型。


图 1. Linux 和 UNIX 上旧的 DB2 进程模型
Linux 和 UNIX 上旧的 DB2 进程模型

图 2 显示了 Linux 和 UNIX 上新的进程模型。


图 2. Linux 和 UNIX 上新的 DB2 进程模型
Linux 和 UNIX 上新的 DB2 进程模型

数据库服务器、客户机与应用程序之间的通信由一个框架来处理。这种框架正是所有 DB2 服务器都使用的进程模型。它确保内部使用的数据库文件不会干扰用户或数据库应用程序。

引擎分派单元(engine dispatchable units,EDU)负责执行各种任务,例如处理数据库应用程序请求、读取数据库日志文件以及将日志记录从日志缓冲区刷新到磁盘上的日志文件。通常,DB2 服务器将每个任务作为一个单独的 EDU 进行处理。在 DB2 9.5 之前,大多数这样的 EDU 在 UNIX 和 Linux 环境中是进程,而在 Windows 环境中是线程。而在 9.5 中,DB2 的进程模型得到统一,现在 EDU 在 Linux、 UNIX 和 Windows 环境中都是线程。

下面是这种新的内存模型的一些优点:

  • 这种新的内存模型更加简单,而且更易于配置。请参阅 DB2 Information Center 中的以下内容:
    • 配置内存和内存堆
    • 内存配置简化
  • 这种模型可以节省资源:
    使用的系统文件描述符明显减少。进程与线程之间最明显的区别就是,一个进程的所有线程都共享相同的内存空间和系统定义的设施。这些设施包括打开文件句柄(文件描述符)、共享内存、进程同步原语和当前目录。一个进程中的所有线程可以共享相同的文件描述符。这里不需要让每个代理维护它自己的文件描述符表。
  • 性能得到提高:
    操作系统通常可以在相同进程中的不同线程之间更快速地切换(上下文切换),而不是在不同进程之间切换。这种切换不需要切换地址空间。由于全局内存是共享的,几乎不必分配新的内存,因此创建一个线程比创建一个进程更简单、更快捷。就处理器周期和使用的内存而言,创建进程的代价较高。
  • 有更高的自动化程度和动态的可配置参数,因此 DBA 更轻松。
    本文的 进程模型配置简化 小节中将对此加以阐述。
  • 现在,进程模型在所有三个平台上是一样的:Linux、UNIX 和 Windows。

用 db2pd 监视线程,并用 ps 输出与之映射

在 DB2 9.5 之前,在 UNIX 和 Linux 环境中,通过 ps 系统命令或 db2_local_ps 命令,可以列出所有活动的 DB2 EDU。然而,在 DB2 9.5 中,这些命令不再列出 db2sysc 进程中的任何 EDU 线程。因此,当 DB2 用户和 DBA 使用一个 OS 命令查看系统上正在运行的进程时,一个变化是,他们只能看到一个进程,而不是多个进程。从 DBA 的角度来看,这正是您期望的管理方面的变化。

$ ps -fu db2ins10
UID PID PPID C STIME TTY TIME CMD
db2ins10 1237176 2109662 0 Feb 28 - 0:12 db2acd 0
db2ins10 1921136 2109662 0 Feb 28 - 0:14 db2sysc 0
db2ins10 2101494 1941686 0 14:22:34 pts/1 0:00 -ks
db2ins10 2420958 2101494 0 15:25:33 pts/1 0:00 ps -fu db2ins10

在 AIX 上
查看 db2sysc 进程(PID = 1921136)中的所有线程:


清单 1. 在 AIX 系统上查看 db2sysc 进程的所有线程




本文转自IBM Developerworks中国

      请点击此处查看全文


 

你可能感兴趣的:(DB2 9.5 中多线程架构的工作原理)