DB2学习心得体会
在2004年12月,2005年1月,分两次,参加了单位组织的DB2培训,共3门课,分别是CF21/CF45/CF41,有一点点心得体会,写出来与大家一起交流和提高。
第一部分。关于学习。
给我们上课的牛老师,很年轻,77年12月出生于河南,95年考入南航,很快(大概就是2005年了)就要从该校毕业,博士。听课的人,13个人,和老师年纪都差不太多,但平均年龄显然比老师大。
牛老师接触DB2的时间显然和我们是差不多的,我们单位是从96/97年,DB2的UDB 5.0就开始用起来的,那时候我们也没少学习这个IBM刚从大机移植到通用平台的通用数据库产品。
甚至我们还有人考取了DB2的IBM Certified Solutions Expert认证。
但是,由于一些特殊原因,单位始终没有在更大范围使用DB2产品,反而后来又引进了oracle8。在有限的应用领域中,应该说没有发挥出该产品的特点,应用层次不够深入。当然从人才培养和岗位设置上,也从没设立过DBA这一职位。
应该说,如果个人愿意学习,还是可以取得很大成绩的,只要抓住机会。应该说单位是非常非常早就引进了db2这个产品的。从这一点上来讲,我们这些学员的学习研究机会是和牛老师基本一样的。
第二部分。关于db2管理命令。
DB2的管理命令还是比较简单的,网络上可以查到很多这些方面的资料。在此不一一描述,感兴趣的可以找IBM的原始资料,也可以到网上查到很多人整理过的命令手册。
比如说:
1. 如何停止实例? DB2STOP
2. 如何启动实例? DB2START
3. 管理服务器的默认名为? UNIX下为DB2AS WINDOWS下为DB2DAS00
4. 如何查看系统数据库目录? LIST DB DIRECTORY
5. 如何查看数据库服务器目录? LISTNODEDIRECTORY
第三部分。关于db2性能。
很多人比较关心DB2的性能。一般来说,安装好的DB2,缺省给的各种参数都是基于一个原则来配置的:你的机器是低档次机器。而一般情况下,实际用于生产环境中的机器,都是比较高档的IBM机器(否则也不需要使用DB2这一数据库了),这样为了发挥机器的高配置优势,就应该调整一些参数,以便获取最好的性能。
这方面,也有很多资料可以查,仍然是有原厂商资料,有网友整理过的资料。
有三种级别的参数需要调整。
1. db2set级别的,可以认为是针对db2的环境变量。
如:RR_TO_RS,HASH_UNION
2. DBM级别的参数。
如:NUMDB, MON_HEAP_SZ, JAVA_HEAP_SZ, SHEAPTHRES ASLHEAPSZ, QUERY_HEAP_SZ, MAXAGENTS, NUM_POOLAGENTS,NUM_INITAGENTS,INTRA_PARALLEL,MAX_QUERYDEGREE
3. DB级的参数。
如:DBHEAP, LOGBUFSZ,UTIL_HEAP_SZ,BUFFPAGE,ESTORE_SEG_SZ,NUM_ESTORE_SEGS,LOCKLIST,APP_CTL_HEAP_SZ,SHEAPTHRES_SHR,SORTHEAP,STMTHEAP,APPLHEAPSZ,PCKCACHESZ,STAT_HEAP_SZ,DLCHKTIME,MAXLOCKS,LOCKTIMEOUT,CHNGPGS_THRESH,NUM_IOCLEANERS,NUM_IOSERVERS,MAXAPPLS,AVG_APPLS,MAXFILOP,LOGFILSIZ,LOGPRIMARY,LOGSECOND,SOFTMAX
除了上述参数需要调整外,还有一种东西是在数据库设计和实施的时候需要考虑的,这就是关于bufferpool, tablespaces,。
比如说,我们在考虑表的存储时,应考虑将表分别存放在不同的表空间中,将索引单独放在独立的表空间,大字段LOB放置在独立的表空间。除了临时表空间使用SMS方式管理以外,其他表空间尽量使用DMS方式管理。
表空间的容器,应尽量分布在不同的硬盘上,改善I/O性能。
日志应单独使用自己的存储硬盘,避免和其他数据的存取产生I/O竞争。
应该为表空间单独指定bufferpool,以改善性能,缺省的bufferpool一般都太小,应不用,或调大。
影响系统性能的还有,根据CPU数量设置并行度,根据硬盘个数设置I/O参数,根据内存多少设置缓存。
第四部分。关于IT集成系统的整体性能。
事实上,很多大型计算机系统在项目建设时,都会委托一个大的IT公司进行项目的集成工作,包括主机OS的安装,HA或CLUSTER配置,等等。
在一个典型的B/S系统中,使用IBM P系列的主机,运行AIX操作系统,安装DB2数据库,使用WebShpere作中间件,客户端使用IE浏览器。这样的系统中,影响最终客户感受到的性能的因素是很多的。
包括:CPU、IO、内存、网络,DB2、WebSphere,还有就是开发商提供的根据业务需要开发的软件。
作为系统的SA也好,DBA也好,都想从自己管辖的层面上提高性能,这是应该的。CF45教给我们的也正是如何在DB2层面上改善相应速度,提高性能。
如果做的好,在数据库层面上可以最多影响系统的30%的性能。也就是设置的好,可以提高30%的速度,设置的不好,可以降低30%速度。
但是,目前的集成公司并没有几个能做到这一点,也就是从主机,到数据库,到中间件都很懂,都能在这些层面上将参数调整至最优。
简单来说,公司在给你报机器硬件配置的时候,要求采购8个CPU,16G内存,以运行数据库,否则不能满足你需求中所描述的性能指标。
而在实施的时候,他会把你这台高配置机器,安装成32位操作系统,这样你的数据库在运行的时候,再怎么能耐也只能使用其中的2G内存,剩下的14G都给OS用,恐怕怎么都是一个浪费。
该公司在DB2参数中,有时候会"有意无意"的忘记设置INTRA_PARALLEL相关的并行度参数。这样你的机器尽管安装有8棵高档CPU也只能一个忙死,其他闲着。
他也可以购买有32快硬盘的阵列,实际数据库则使用其中一块盘,而且仅有系统缺省提供的1个用户表空间,使用SMS方式管理,不建多余的表空间,不构建和设置自己的bufferpool,而索引更不会多建一个。
呵呵,这样的集成商,数不胜数。
作为甲方公司的技术人员,只有擦亮眼镜,实时盯着,必要时指出一些毛病,让乙方去实施,这时候就不知道谁最操心,谁在干活,谁在集成了。
第五部分。其他。
1. Db2的各个版本
5.2比较稳定
7.2也相对稳定
8.1with pack 5也比较稳定,pack6a有一些问题
8.1打了7a的补丁就成8.2了,暂时还有一些问题,不太稳定。
2. DB2 V8.2的一些亮点
高可用性。复制技术更好,集成了原来infomix的一些好的技术进去。