- 浏览: 148128 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
loveseaside:
db2v9.1
db2许可证 -
uglypeak:
不对,你这个是哪个版本的??
db2许可证 -
uglypeak:
试过了,不行啊~~
db2许可证 -
yingjun055:
怎么样能修改后,能实时生效呢?
java 读取配置文件的例子
在DB2数据库中,是按照表、表空间、数据库三个级别来存储数据的。由于表空间的设置直接跟数据库的性能相关。为此在表空间中数据表的部署是否合理就直接影响到数据库的运行效率。
在DB2数据库中,是按照表、表空间、数据库三个级别来存储数据的。由于表空间的设置直接跟数据库的性能相关。为此在表空间中数据表的部署是否合理就直接影响到数据库的运行效率。笔者认为,如果要让数据表合理的映射到表空间,至少需要遵守如下的规则。
规则一:根据表的访问率来映射表空间。
在一个数据库系统中,表的访问率是不同的。根据不完全的预测,一个数据库中大概只有40%到50%左右的表其具有比较高的访问率。而其他的数据表很难的才用到一回。如在一个为ERP而设计的数据库系统中,采购订单、销售订单等对应的数据表访问率是很高的,但是成本调整单等对应的数据表一年到头难得使用几次。所以在数据库部署中,数据库管理员首先要根据企业应用的实际情况,将数据库中的表按照其使用的频率进行分类。然后将使用频率高的表放在一个表空间,或者根据模块放在几个不同的表空间中。然后将他们存放在性能比较高的硬盘上,或者存放在活跃程度低的硬盘中。如此的话,I/O争用的现象就会少的多,从而提高数据库的性能。
规则二:根据字段的使用程度来规划表。
不仅不同的表访问频率有很大的差别,即使是同一个表中,其字段的访问频率也会有很大不同。如在一些人事管理系统数据库中,有些公司会将员工的身份证复印件或者照片扫描存放到数据库中。这些图片在数据库中需要利用LOB数据类型来存放。由于这个数据类型比较大,为此无论是在查询还是数据库备份的时候,都会给其带来负面的影响。如当用户在查询员工信息时,如果在SELECT语句中不加入字段的名称,而采用全部查询的方式,那么查询的速度会很慢。随着图片数量的增多,其速度会呈几何级别下降。但是实际上,用户平时并不需要访问这些员工的身份证复印件或者照片信息。所以在查询的时候,将这些没有的信息给他们显示出来,也是一种浪费,而且还影响数据库的性能。
为此在设计表的时候,如果某些列不经常用到,而且这些列的数据类型又是大数据类型或者说很多都是NULL值(数据库在处理NULL值的时候效率要比其他的只慢许多),此时最好将这些列跟其它的列分开在不同的表中存放。由于他们的访问频率不同,就可以按照上面第一个规则来映射表空间,以提高数据库的访问性能。
不过需要注意的是,如果身份证复印件等信息经常需要用到的,那么也最好将他们分开在两个表中。只是将存放复印件信息的表也存放在性能比较好的硬盘中,以提高访问这些数据的效率。之所以仍然需要将他们分开存放,这主要是考虑到备份的性能。因为这些LOB数据类型会降低数据库的备份效率,为此可以在数据库比较空闲的时候对这些LOB数据所在的表空间进行独立的备份。
规则三:索引数据、长字段数据、普通数据分开存放。
笔者在进行表空间设计的时候,往往会将索引数据、长字段数据与普通数据分开来存放。即将一个表空间用来存放索引数据,一个表空间用来存储长字段数据,另一个表空间庸才存储普通的数据。这主要是通过在建立表的时候为这些数据类型建立不同的表,然后将表根据数据类型分类的不同将他们存放在不同的表空间中。这主要是根据三种数据的作用不同而考虑的。众所周知,给表设置索引之后可以在很大程度上提高数据库的性能。这主要是因为如果设置索引好,数据库系统会先从索引找查找数据。查找相应的数据后会直接根据记录序列号从其他表中读取相关记录。也即是说只在索引表中查询,而不会在其他表中查找记录。所以说如果能够提高索引表的工作效率,那么就可以在很大程度上提高数据库的查询性能。为此笔者建议,将索引数据存放在单独的表空间中。如果硬件条件允许的话,并且企业对于查询具有比较高的性能要求,就将索引表空间存放在单独的硬盘中,以防止硬盘的I/O争用。如果硬件条件不允许的话,那么至少也要将这个索引表空间存放在性能比较高的硬盘上。
另外为了提高索引的工作效率,最好不讲在长字段上添加索引。如对于文本型的字段,虽然也可以为其添加索引。但是给其添加索引的话,工作效率并不会很高。此时将这个索引数据存放在单独的表空间中,这个表空间就会变得很大。根据笔者这么多年的工作经验,可以告诉大家,在长字段上设置索引,是得不偿失的。
将长字段分开来存放,还有一个原因就是节省存储空间。根据使用的经验,长字段的使用效率是比较低的。也就是说,在长字段数据类型中,一定会存在没有使用的空间。所以会有一定程度的浪费。具体的浪费数量要根据长字段的数据类型大小以及在列中出现的数据的大小是否相对一致。因为长字段数据会被系统尽可能的平均分配到页面中。而长字段数据的最后页面往往不能够占满其规定的字节,为此对于长字段来说,存储空间的浪费是不可避免的。故最好是将他们存放在不同的表中。这并不是说可以避免空间的浪费,而是指在有需要的时候可以更加方便的回收这些被浪费的空间。
规则四:根据备份的需要来规划表空间。
当数据库中的数据量比较多的时候,对数据库进行备份是一项比价花时间的工作。为此对于大型的数据库,管理员往往不会对整个数据库进行备份。而是在表空间的级别上,进行单独的备份。如此的话,就可以将数据库备份的时间分开来,从而可以有效减少对数据库正常作业产生的负面影响。
如以前有个客户,他们的业务非常的频繁,为此每天的数据都会有很大的增长。为了提高他们数据库性能,笔者决定采用在表空间级别上进行备份的策略。根据数据库繁忙程度的不同,分别在中午午休时间与晚上下班时间进行数据库的备份作业。这家企业数据库的空闲时间不读,只有中午一个小时与晚上二个小时的空闲时间。而根据预测,要完成海量数据库的备份,起码需要150分钟的时间。所以在空间时间内无法完成整个数据库的备份。为此笔者只好在表空间级别上进行备份,即将整个数据库的备份工作分散在这三个小时内完成。从而将数据库备份对服务器产生的性能影响降低到最低。
规则五:根据表的大小来规划表空间。
在整个数据库中,表的大小往往会有很大的差异。有些表可能只有不到几百条记录;而有些表则往往有上百万、上千万条记录。根据表记录数量的不同,可以将表分为大表与小表。在规划表空间的时候,这个就是需要考虑的一个因素。如可以将一些小表存放在一个单独的表空间中,并且是存放到SMS类型的表空间。因为对于小表来说,其I/O对于其性能的影响并不是很大。然后对那些大表,并且需要进行快速访问的,就需要选择合适的DMS表空间。这主要是因为对于大表操作,往往会涉及到很多的输入输出,此时这个I/O往往会成为其性能的瓶颈。
可见,要将表映射到合适的表空间不是一件很容易的事情。这不仅要求数据库管理员具有很深厚的技术功底,更重要的是要求他们有比较丰富的实际项目经验。有时候这个项目经验可能比固定的规则更加有用。所以希望数据库管理在牢记上面这些规则的同时,要学会灵活应用。而不能够在平时的工作中死搬硬套。如对于一些比较小型的应用,以上这些规则根据其不到应有的效果。相反,在这表空间设计上反而浪费了很多时间。故一般在比较大型的数据库应用中才需要通过表空间规划来提升数据库性能。
发表评论
-
DB2系统命令
2011-08-10 15:11 2564DB2系统命令 1、dasauto在$DB2DIR/da ... -
db2查看当前模式的sql
2011-08-09 15:05 1261通过DB2提供的专用寄存器current sche ... -
db2中会导致表处于reorg pending状态的alter语句
2011-08-09 14:57 4946会导致表处于reorg pending状态的alter tab ... -
db2系统编目表的实践
2011-08-03 15:34 945一 根据此命令导出全部需要进行统计的表--导出runstats ... -
db2认证
2011-07-19 09:29 1058在这里,我把IBM的认证相关的资料整理下,希望对大家有点帮助。 ... -
db2pd 使用(二)
2011-07-19 09:23 2781分析 DB2 for Linux, UNIX, and ... -
db2pd 使用
2011-07-19 08:53 1380db2pd 工具 用于监控 DB2 实例和数据库的新的 DB ... -
DB2 V9.7分区索引新特性
2011-05-26 16:35 1379在本文中将介绍 DB2 V9.7 ... -
db2的几个有用SQL
2010-11-04 14:47 927--查找函数SELECT * FROM SYSCAT.FUNC ... -
すばらしいnet ---------testpassport問題集のメリット
2010-09-17 14:16 794http://www.testpassport.jp/ ... -
DB2关于查看表空间是否启动了自动存储功能
2010-09-16 11:04 3938可以通过三种方式查看 进入命令行模式 d ... -
DB2约束
2010-09-09 09:53 1127DB2约束 DB2 约束用来对数据实施业务规则,主要 ... -
高级建表SQL
2010-08-16 09:15 838--建表AB 和已知表AA一样create table AB ... -
db2单表优化的命令
2010-08-16 09:04 1000reorg 和runstats 都是单个表优化 ... -
DB2常用语句总结
2010-06-03 16:41 762DB2常用语句 ... -
DB2使用笔记
2010-06-03 15:00 1459DB2使用笔 ... -
db2检索授权的SQL
2010-05-27 10:07 964--检索具有特权的所有授权名 SELECT DISTINCT ... -
db2许可证
2010-05-27 09:54 1809许可证执行过程 1、windows下启动命令提示符。2、将目 ... -
DB2 DATE 函数的使用一个陷阱
2010-05-19 09:27 4810DB2 DATE 函数的使用一个陷阱 1)DATE 函数正确 ... -
DB2 连接与谓词
2010-05-19 08:37 1077DB2 连接与谓词 ...
相关推荐
db2表空间不足及处理
检查db2表空间是否不足已经处理的方法,具体怎么查看表空间是否已经被占满已经具体的解决方法在文档中都有说明。。
DB2表空间详解
DB2表空间管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)
IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池
DB2表和表空间状态详解 摘自IBM官网 状态说明很全
DB2表空间检查与调优 附录1-DB2表空间状态列表
DB2的表空间 DB2的表空间 DB2的表空间 DB2的表空间
记录db2 裸设备扩容归档 (文件系统)和表空间(裸设备)的过程。aix上操作截图
对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...
DB2表空间管理及查看脚本,用于对表空间中的分表规则明确的表进行删除!以保证有足够的表空间预留!
DB2的表空间和缓冲池
db2清空表数据
常用的db2命令 常用的db2命令 常用的db2命令 查看DB2表信息查看DB2表信息
DB2基础----表空间
DB2不允许访问表空间
DB2数据表数据如何导出到EXCEL,通过一系列命令操作,...
这是某银行 DB2 系统发生的一次真实案例,SQL 语句执行时间变长,最后发现“罪魁祸首”竟是 DB2 系统临时表空间过大。本文将介绍这个性能问题的分析处理过程,如何逐步定位问题根本原因,并提供了解决方法。这其中...
db2分区表在线迁移 db2分区表在线迁移 db2分区表在线迁移