`
loveseaside
  • 浏览: 151959 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

[转载]DB2表合理映射到表空间

    博客分类:
  • db2
阅读更多
  在DB2数据库中,是按照表、表空间、数据库三个级别来存储数据的。由于表空间的设置直接跟数据库的性能相关。为此在表空间中数据表的部署是否合理就直接影响到数据库的运行效率。

  在DB2数据库中,是按照表、表空间、数据库三个级别来存储数据的。由于表空间的设置直接跟数据库的性能相关。为此在表空间中数据表的部署是否合理就直接影响到数据库的运行效率。笔者认为,如果要让数据表合理的映射到表空间,至少需要遵守如下的规则。

  规则一:根据表的访问率来映射表空间。

  在一个数据库系统中,表的访问率是不同的。根据不完全的预测,一个数据库中大概只有40%到50%左右的表其具有比较高的访问率。而其他的数据表很难的才用到一回。如在一个为ERP而设计的数据库系统中,采购订单、销售订单等对应的数据表访问率是很高的,但是成本调整单等对应的数据表一年到头难得使用几次。所以在数据库部署中,数据库管理员首先要根据企业应用的实际情况,将数据库中的表按照其使用的频率进行分类。然后将使用频率高的表放在一个表空间,或者根据模块放在几个不同的表空间中。然后将他们存放在性能比较高的硬盘上,或者存放在活跃程度低的硬盘中。如此的话,I/O争用的现象就会少的多,从而提高数据库的性能。

  规则二:根据字段的使用程度来规划表。

  不仅不同的表访问频率有很大的差别,即使是同一个表中,其字段的访问频率也会有很大不同。如在一些人事管理系统数据库中,有些公司会将员工的身份证复印件或者照片扫描存放到数据库中。这些图片在数据库中需要利用LOB数据类型来存放。由于这个数据类型比较大,为此无论是在查询还是数据库备份的时候,都会给其带来负面的影响。如当用户在查询员工信息时,如果在SELECT语句中不加入字段的名称,而采用全部查询的方式,那么查询的速度会很慢。随着图片数量的增多,其速度会呈几何级别下降。但是实际上,用户平时并不需要访问这些员工的身份证复印件或者照片信息。所以在查询的时候,将这些没有的信息给他们显示出来,也是一种浪费,而且还影响数据库的性能。

  为此在设计表的时候,如果某些列不经常用到,而且这些列的数据类型又是大数据类型或者说很多都是NULL值(数据库在处理NULL值的时候效率要比其他的只慢许多),此时最好将这些列跟其它的列分开在不同的表中存放。由于他们的访问频率不同,就可以按照上面第一个规则来映射表空间,以提高数据库的访问性能。

不过需要注意的是,如果身份证复印件等信息经常需要用到的,那么也最好将他们分开在两个表中。只是将存放复印件信息的表也存放在性能比较好的硬盘中,以提高访问这些数据的效率。之所以仍然需要将他们分开存放,这主要是考虑到备份的性能。因为这些LOB数据类型会降低数据库的备份效率,为此可以在数据库比较空闲的时候对这些LOB数据所在的表空间进行独立的备份。

  规则三:索引数据、长字段数据、普通数据分开存放。

  笔者在进行表空间设计的时候,往往会将索引数据、长字段数据与普通数据分开来存放。即将一个表空间用来存放索引数据,一个表空间用来存储长字段数据,另一个表空间庸才存储普通的数据。这主要是通过在建立表的时候为这些数据类型建立不同的表,然后将表根据数据类型分类的不同将他们存放在不同的表空间中。这主要是根据三种数据的作用不同而考虑的。众所周知,给表设置索引之后可以在很大程度上提高数据库的性能。这主要是因为如果设置索引好,数据库系统会先从索引找查找数据。查找相应的数据后会直接根据记录序列号从其他表中读取相关记录。也即是说只在索引表中查询,而不会在其他表中查找记录。所以说如果能够提高索引表的工作效率,那么就可以在很大程度上提高数据库的查询性能。为此笔者建议,将索引数据存放在单独的表空间中。如果硬件条件允许的话,并且企业对于查询具有比较高的性能要求,就将索引表空间存放在单独的硬盘中,以防止硬盘的I/O争用。如果硬件条件不允许的话,那么至少也要将这个索引表空间存放在性能比较高的硬盘上。

  另外为了提高索引的工作效率,最好不讲在长字段上添加索引。如对于文本型的字段,虽然也可以为其添加索引。但是给其添加索引的话,工作效率并不会很高。此时将这个索引数据存放在单独的表空间中,这个表空间就会变得很大。根据笔者这么多年的工作经验,可以告诉大家,在长字段上设置索引,是得不偿失的。

  将长字段分开来存放,还有一个原因就是节省存储空间。根据使用的经验,长字段的使用效率是比较低的。也就是说,在长字段数据类型中,一定会存在没有使用的空间。所以会有一定程度的浪费。具体的浪费数量要根据长字段的数据类型大小以及在列中出现的数据的大小是否相对一致。因为长字段数据会被系统尽可能的平均分配到页面中。而长字段数据的最后页面往往不能够占满其规定的字节,为此对于长字段来说,存储空间的浪费是不可避免的。故最好是将他们存放在不同的表中。这并不是说可以避免空间的浪费,而是指在有需要的时候可以更加方便的回收这些被浪费的空间。

规则四:根据备份的需要来规划表空间。

  当数据库中的数据量比较多的时候,对数据库进行备份是一项比价花时间的工作。为此对于大型的数据库,管理员往往不会对整个数据库进行备份。而是在表空间的级别上,进行单独的备份。如此的话,就可以将数据库备份的时间分开来,从而可以有效减少对数据库正常作业产生的负面影响。

  如以前有个客户,他们的业务非常的频繁,为此每天的数据都会有很大的增长。为了提高他们数据库性能,笔者决定采用在表空间级别上进行备份的策略。根据数据库繁忙程度的不同,分别在中午午休时间与晚上下班时间进行数据库的备份作业。这家企业数据库的空闲时间不读,只有中午一个小时与晚上二个小时的空闲时间。而根据预测,要完成海量数据库的备份,起码需要150分钟的时间。所以在空间时间内无法完成整个数据库的备份。为此笔者只好在表空间级别上进行备份,即将整个数据库的备份工作分散在这三个小时内完成。从而将数据库备份对服务器产生的性能影响降低到最低。

  规则五:根据表的大小来规划表空间。

  在整个数据库中,表的大小往往会有很大的差异。有些表可能只有不到几百条记录;而有些表则往往有上百万、上千万条记录。根据表记录数量的不同,可以将表分为大表与小表。在规划表空间的时候,这个就是需要考虑的一个因素。如可以将一些小表存放在一个单独的表空间中,并且是存放到SMS类型的表空间。因为对于小表来说,其I/O对于其性能的影响并不是很大。然后对那些大表,并且需要进行快速访问的,就需要选择合适的DMS表空间。这主要是因为对于大表操作,往往会涉及到很多的输入输出,此时这个I/O往往会成为其性能的瓶颈

  可见,要将表映射到合适的表空间不是一件很容易的事情。这不仅要求数据库管理员具有很深厚的技术功底,更重要的是要求他们有比较丰富的实际项目经验。有时候这个项目经验可能比固定的规则更加有用。所以希望数据库管理在牢记上面这些规则的同时,要学会灵活应用。而不能够在平时的工作中死搬硬套。如对于一些比较小型的应用,以上这些规则根据其不到应有的效果。相反,在这表空间设计上反而浪费了很多时间。故一般在比较大型的数据库应用中才需要通过表空间规划来提升数据库性能。

http://database.ctocio.com.cn/470/9187470_2.shtml

分享到:
评论

相关推荐

    db2表空间不足及处理.doc

    DB2表空间不足及处理 DB2表空间是数据库管理系统中用于存储数据的基本结构单元。DB2表空间不足可能会导致数据库性能下降,甚至崩溃。因此, DB2表空间的检查和处理是数据库管理员的重要任务之一。 一、DB2表空间的...

    db2表空间不足及处理

    "DB2表空间不足及处理" DB2表空间不足是指数据库中可用空间不足,以致影响数据库的正常运行。在本文中,我们将介绍如何检查DB2表空间是否不足,以及如何处理这种情况。 什么是DB2表空间? 在DB2中,表空间是指...

    DB2表和表空间状态详解

    ### DB2表和表空间状态详解 #### 引言 IBM DB2 Universal Database(DB2 UDB)作为一款先进的数据库管理系统,提供了丰富的功能以确保数据的完整性和安全性。其中一个关键特性便是通过表和表空间的状态控制,实现...

    DB2表空间管理

    通过本文的介绍,我们可以了解到DB2中的表空间管理主要包括两种类型:系统管理空间(SMS)和数据库管理空间(DMS)。这两种表空间各有特点,适用于不同的场景。合理地利用和管理表空间可以有效提高数据库性能并减少资源...

    db2表空间详解

    表空间的设计与管理对数据库性能有着直接的影响,合理规划表空间能够优化数据存储效率,提升数据库整体性能。 #### 二、表空间类型 DB2支持两种类型的表空间:非自动存储管理(DMS)和自动存储管理(SMS)。DMS表...

    db2裸设备扩容表空间

    总结来说,扩容DB2的裸设备表空间涉及到AIX系统的LVM操作、文件系统调整和DB2数据库内部的表空间配置更新。每个步骤都需要谨慎处理,确保数据的安全性和服务的连续性。在实际操作时,应遵循最佳实践并做好数据备份,...

    IBM DB2 表空间与缓冲池

    IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池

    DB2表空间检查与调优.pdf

    DB2表空间的问题虽然常见,但只要我们采取合理的预防措施和及时的应对措施,就可以有效避免由此引起的各种问题。对于DB2数据库管理员来说,掌握这些技巧不仅能提升系统的稳定性,还能提高自身的专业能力。希望本文...

    DB2的表空间 DB2的表空间

    DB2的表空间 DB2的表空间 DB2的表空间 DB2的表空间

    DB2不允许访问表空间

    ### DB2 不允许访问表空间问题解析 #### 一、问题背景及现象 在使用IBM DB2数据库管理系统的过程中,有时可能会遇到无法访问特定表空间的情况。这种情况下,用户可能能够执行SELECT查询,但无法进行UPDATE、ALTER...

    DB2的表空间和缓冲池

    ### DB2的表空间和缓冲池 ...在DB2中合理设计和优化表空间与缓冲池对于提高数据库性能至关重要。通过理解不同类型的表空间及其管理方式,以及合理配置缓冲池,可以有效提高数据访问效率和数据库整体性能。

    DB2系统临时表空间过大引发的性能问题-contracted.doc

    DB2的临时表空间主要用于存储临时表和排序所需的中间数据,当其大小超出合理范围,可能导致以下几个方面的问题: 1. **资源消耗**:临时表空间占用过多磁盘空间,可能会导致I/O性能下降,因为系统需要频繁读写这些...

    如何降低DB2的管理表空间的高水位标记

    对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...

    DB2表空间管理及查看脚本

    ### DB2表空间管理及查看脚本解析 #### 核心知识点概述 本文将深入解析一个专门用于管理DB2数据库中表空间的脚本。该脚本的主要功能是监测特定表空间(例如“TBS_DW_USER”)的使用情况,并在达到预定阈值时自动...

    DB2基础----表空间

    这条命令创建了一个名为`mytablespace`的表空间,使用自动存储管理,初始分配1000个数据页,并关联到名为`bp1`的缓冲池。 四、表空间管理 表空间管理包括监控、调整和优化。监控表空间的使用情况,确保有足够的空间...

    DB2恢复删除表学习

    在IBM DB2数据库管理系统中,为了应对误删表的情况,DB2提供了表空间级别的表恢复功能。这种功能允许用户在一定条件下恢复已被删除的表及其数据。默认情况下,在创建表空间时会开启已删除表的恢复选项。然而,出于...

    db2中有表损坏时最快的恢复方法db2look-move

    利用`db2look`命令,导出原始数据库(本例中为`orcl`)的表结构和数据到SQL脚本文件中。具体命令如下: ```sql db2look -d orcl -e -l -t -d @ -a -x -i yygl -w yygl -o d:\db2move\createdb.sql ``` 其中: - `-...

    DB2数据库表导入MYSQL

    下面我们将详细探讨如何从DB2数据库将表导入到MySQL中,并在MyEclipse环境中进行操作。 首先,了解DB2和MySQL的基础是至关重要的。DB2是由IBM开发的一款关系型数据库管理系统,广泛应用于大型企业,支持复杂的事务...

Global site tag (gtag.js) - Google Analytics