连接db2工具 db2链接工具_客户端


DB2 for LUW进程模型在DB2v9.5之前都是多进程模型,DB2v9.5之后体系架构变更为单进程多线程模型。

DB2是一个C/S结构,客户端可以通过TCP/IP或IPC协议与服务器通信,每当客户端与服务器建立连接之后,会在服务器端产生一个代理线程(db2agent)负责处理来自客户端的所有请求,但是当某一时刻并发请求很多或者连接断开时,重复地产生与销毁代理线程会产生很大的系统开销,所以DB2服务器在启动时创建一个常连接池来避免重复地创建/销毁代理线程,但是如果某一个处理的请求非常大时,如果单个线程去处理效率比较低下,为了提高单个请求的处理能力,与客户端通信的那个代理线程(db2agent)可以从线程池中额外召集几个线程(db2agentp)来共同处理某个请求。

DB2的线程主要分为以下几大类:

  • 常连接池内的线程db2agent和db2agentp:处理客户端请求,比如从bufferpool中取请求的数据,或者将请求拆解放到预取(prefetch)队列中供预取进程(prefetcher)从磁盘取数据使用、或者将一些DML操作记录到日志缓冲区(logbuffer)中等。
  • 通信管理线程db2tcpcm和db2ipccm:负责对来自客户端的连接请求进行安全验证和检查,并与客户端实现三次握手连接。
  • 数据页预取进程db2pfchr/页面清理进程db2pclnr:当请求的数据不在bufferpool中时,需要预取进程db2pfchr通过异步读数据的方式将将所需数据从磁盘读入bufferpool中。

DB2对数据的操纵主要在bufferpool中进行,当插入某些数据或对某些数据做了变更后形成脏页(dirtypage)后,需要使用线程db2pclnr根据一定的机制定期清理bufferpool中的脏页,一方面持久化数据,另一方面给bufferpool腾出更多可置换空间供使用。

  • 日志页读写进程db2loggr/db2loggw:DB2采用的是读日志优先(Read logahead)的策略来持久化数据,即在将insert/delete/update的数据写入磁盘前,必须先将对这些操作的日志从日志缓冲区持久化到磁盘当中,这个操作由db2loggw线程完成。

当需要使用持久化到磁盘的日志恢复或撤销某些操作时,需要从磁盘中将对应的日志读入到日志缓冲区中,此时有db2loggr线程完成。

  • 全局死锁检测线程db2dlock:该线程主要是检测系统死锁防止因为死锁造成的应用不可用。

以下为部分常见DB2管理工具和实例:


连接db2工具 db2链接工具_客户端_02


该线程主要是检测系统死锁防止因为死锁造成的应用不可用。

以下为部分常见DB2管理工具和实例:

DB2实例命令


连接db2工具 db2链接工具_连接db2工具_03