我有个问题想问一下,当前我数据库首次链接时速度过慢,同时关闭数据库实例也非常慢,现在服务器内存8G,增加服务器内存这样是否可以有所改观呢?
数据库首次连接,情况分很多种,数据库首先需要激活,激活的过程需要分配系统资源,请确认系统资源是否空闲,如果内存不够,系统首先要置换出足够的内存分配给数据库后才能激活,也有可能是数据库需要做崩溃恢复。另外可以抓取trace,查看是哪一个步骤慢,我原来遇到一个bug,是数据库在ICC认证时慢。
至于关闭数据库慢,主要取决于你的脏数据量,数据库正常关闭时需要把所有的脏数据落实到磁盘。
DB2数据库启动流程大体是这样的
1.执行启动实例db2start,然后系统启动实例进程以及分配实例所需的内存堆。
2.激活数据库,在实例进程内部启动数据库所需的线程,也就是edus以及分配数据库所需的内存堆、缓冲池等待,这一步是启动数据库中最消耗时间的。激活数据库分为显示激活、隐性激活,显示激活就是执行激活数据库命令:activate databade DB_NAME。隐性激活就是用户第一次执行连接数据库命令:connect to DB_NAME,这里包含了激活数据库及连接数据库这两个步骤。因此首次连接数据库会消耗比较多的时间。
3.取消激活数据库,顾名思义,就是激活数据库的反操作。取消激活数据库会将内存中已提交事务的脏数据页刷新到磁盘中,将未提交的事务进行回滚,然后关闭相关线程,回收相关内存,因此取消激活数据库也比较消耗时间。相应的也有显示取消激活及隐性取消激活,显示取消激活就是命令:deactivate db DB_NAME。隐性取消激活就是数据库的最后一个用户断开连接。
从你的情况来看,应该都是数据库隐性激活及取消激活数据库操作,所以就显得慢。如果想快拿就采用显示的方式。