db2语句取每一个的前10_DB2体系架构

本文介绍了DB2从v9.5开始采用的单进程多线程模型,详细阐述了DB2的线程分类,如db2agent、db2agentp、db2tcpcm、db2ipccm、db2pfchr、db2pclnr、db2loggr、db2loggw和db2dlock等,以及它们在处理客户端请求、数据预取、日志管理、死锁检测等方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ad7fd44b9a9413ebf0ba3cfb7d667053.png

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管理工具和实例:

1647b89889255f0e6b5de97704faab79.png

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

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

DB2实例命令

be4eaa434abc18bc93272fabfc853622.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值