DB2 9.5中多线程架构的工作原理
2010-02-18 15:00:57 来源:WEB开发网这种模型可以节省资源:
使用的系统文件描述符明显减少。进程与线程之间最明显的区别就是,一个进程的所有线程都共享相同的内存空间和系统定义的设施。这些设施包括打开文件句柄(文件描述符)、共享内存、进程同步原语和当前目录。一个进程中的所有线程可以共享相同的文件描述符。这里不需要让每个代理维护它自己的文件描述符表。
性能得到提高:
操作系统通常可以在相同进程中的不同线程之间更快速地切换(上下文切换),而不是在不同进程之间切换。这种切换不需要切换地址空间。由于全局内存是共享的,几乎不必分配新的内存,因此创建一个线程比创建一个进程更简单、更快捷。就处理器周期和使用的内存而言,创建进程的代价较高。
有更高的自动化程度和动态的可配置参数,因此 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 -ksh db2ins10 2420958 2101494 0 15:25:33 pts/1 0:00 ps -fu db2ins10
在 AIX 上:
查看 db2sysc 进程(PID = 1921136)中的所有线程:
清单 1. 在 AIX 系统上查看 db2sysc 进程的所有线程
$ ps -mo THREAD -p 1921136 USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND db2ins10 1921136 2109662 - A 0 60 26 * 40401 - - db2sysc 0 - - - 1273899 S 0 60 1 f1000100403674b0 410400 - - - - - - 1327331 Z 0 60 1 - c00001 - - - - - - 1392805 Z 0 60 1 - c00001 - - - - - - 1601705 Z 0 60 1 - c00001 - - - - - - 1814627 Z 0 60 1 - c00001 - - - - - - 1851457 S 0 60 1 f1000004f010de00 410400 - - - - - - 1961987 Z 0 60 1 - c00001 - - - - - - 1974311 Z 0 60 1 - c00001 - - - - - - 2023571 S 0 60 1 f100010041b401b0 410400 - - - - - - 2068591 Z 0 60 1 - c00001 - - - - - - 2179161 Z 0 60 1 - c00001 - - - - - - 2187515 Z 0 60 1 - c00001 - - - - - - 2216003 S 0 60 1 - 400400 - - - - - - 2412647 Z 0 60 1 - c00001 - - - - - - 2551911 Z 0 60 1 - c00001 - - - - - - 2592969 Z 0 60 1 - c00001 - - - - - - 2621455 S 0 60 1 f1000100407f7e30 410400 - - - - - - 2658531 S 0 60 1 - 418400 - - - - - - 3031171 Z 0 60 1 - c00001 - - - - - - 3457047 Z 0 60 1 - c00001 - - - - - - 3899477 Z 0 60 1 - c00001 - - - - - - 4157609 Z 0 60 1 - c00001 - - - - - - 4390991 S 0 60 1 - 400400 - - - - - - 4636819 Z 0 60 1 - c00001 - - - - - - 5628153 S 0 60 1 - 400400 - - - - - - 6783009 Z 0 60 1 - c00001 - - -
在 Linux 上:
查看 db2sysc 进程(PID = 1921136)的所有线程: ps -lLfp 1921136
DBA 现在变得更轻松了。db2pd 也得到增强,可以列出进程和线程。现在可以使用 db2pd 命令和 -edu 选项列出所有活动的 EDU 线程。该命令在 UNIX、Linux 和 Windows 系统上都可以使用。
清单 2. 在 Linux 系统上查看 db2sysc 进程的所有线程
$ db2pd -edu Database Partition 0 -- Active -- Up 1 days 01:05:54 List of all EDUs for database partition 0 db2sysc PID: 1921136 db2wdog PID: 2109662 db2acd PID: 1237176 EDU ID TID Kernel TID EDU Name USR SYS =================================================================================== 1801 1801 2216003 db2agent (idle) 0 0.706935 1.071737 1543 1543 5628153 db2resync 0 0.002641 0.004271 1286 1286 1851457 db2ipccm 0 0.082388 0.044037 1029 1029 2023571 db2licc 0 0.000211 0.001055 772 772 4390991 db2thcln 0 0.000244 0.000105 515 515 2621455 db2aiothr 0 2.740874 6.287562 2 2 1273899 db2alarm 0 0.274076 0.408226 258 258 2658531 db2sysc 0 2.085981 1.379128
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
- ››DB2 pureScale 实战
更多精彩
赞助商链接