- 浏览: 152870 次
- 性别:
- 来自: 郑州
-
文章分类
最新评论
-
loveseaside:
db2v9.1
db2许可证 -
uglypeak:
不对,你这个是哪个版本的??
db2许可证 -
uglypeak:
试过了,不行啊~~
db2许可证 -
yingjun055:
怎么样能修改后,能实时生效呢?
java 读取配置文件的例子
IBM DB2 基本性能又有调整
如果你有使用DB2 UDB的经验,你应该知道, 缓冲池是内存中的一些单独分配给DB2 数据库管理器的空间,让它去做为数据库添加新数据或者去响应一个查询从磁盘返回一些数据数据页的缓冲区。由于从内存中访问数据势必比从磁盘上读取要快的多,因此通过减少磁盘的I/O操作缓冲池改善了数据库的整体性能。 实际上,研究缓冲池是怎样被创建和被使用在调整优化的数据库性能是最重要的一步。
由于缓冲区的重要性地位,每个DBA 都应该了解DB2 UDB怎么使用他们。这里是关于它的快速回顾课程。当新数据增加到数据库时,它首先在缓冲区中增加新页。最终这个页将被具体化到数据库存储空间中。另一方面,为了响应查询当数据从数据库中被检索出来的时候,DB2数据库管理器首先将会将这些包含数据的页存放在缓冲池中,然后才会把它传递给需要它的应用程序或者用户。每次执行新的查询时,将会在每个可以利用的缓冲池中搜寻是否已经有所需要数据的页驻留在内存中。如果那样,就会立刻将它传递给对应的的应用或用户。但是,如果不能在这些缓冲池找到需要的数据的话,DB2 数据库管理器将会讲这些数据从存储器中检索出来并且在传递数据之前将它复制到缓冲区中。一旦页被复制到缓冲池,那么这个页将会一直驻留在缓冲区中直到数据库被关闭或直到它所在的空间需要存储其他页为止。(由于所有数据的加载和修改首先发生在缓冲区——修改过的页最终会去刷新磁盘存储——因此存放在缓冲池中的数据总是最新的)当缓冲池满了之后,DB2 数据库管理器将通过检测页的最后引用时间,页类型,或者页的修改不会影响磁盘内容的改变来选择去除哪些页,这些页可能再次被引用。例如,在30 分钟前被检索以响应查询的页会比包含更新操作而没有落实更新的页更容易被覆盖。
DB2 UDB缺省创建了一个缓冲池(IBMDEFAULTBP)作为数据库创建过程的一部分。在Linux和Unix平台,该缓冲池从内存中被分配了1,000个4KB页;在Windows平台,该缓冲池从内存中被分配了250个4KB页。 你可以通过在控制中心找到缓冲池菜单并且选择适当的操作或者执行ALTER BUFFERPOOL语句来增加或减少这个缓冲池的4KB 页的数量。你也可以通过在控制中心同样的方法或者执行CREATE BUFFERPOOL语句来创建另外的缓冲区。
由于缓冲区的重要性,你应该仔细考虑使用多少个缓冲池来适应你的实施需要;每一个究竟需要多大;以及每个缓冲池怎么样能被充分利用。 在多数环境里,能被有效使用的缓冲区个数取决于可利用的系统内存的大小。 如果可利用的内存可以保留10,000个4k 页(或更少),那么通常的使用单独的大缓冲池比去使用多个小缓冲池要好。 使用多个小缓冲区将导致频繁地访问页来经常与内存进行进出交换,反过来会导致为存储对象比如编目表的I/O竞争或者重复的访问用户表和索引。但是,如果有比较多的内存,应该考虑创兼各自的缓冲区为以下:
·每一种临时表空间被定义
·包含着被一些短期的更新事务一直或者重复访问表的表空间
·包含着表和索引频繁地被更新的表空间
·包含着表和索引频繁地被查询但很少被更新的表空间
·包含着表频繁地被使用于随意的查询的表空间
·包含着很少被应用程序访问的数据的表空间
·包含着一些你想要使用的数据和索引的表空间。
在许多情况下,大一点的缓冲池要优于较小的缓冲池。但是,考虑到可以使用的内存总额以及缓冲池将怎么被使用。 如果你拥有一个要从一个非常大的表中执行许多随机存取操作的应用,那么你应该为这个特殊表创造和使用一个小缓冲池。 在这种情况下,没有必要在缓冲池内存中保留数据页一旦他们被用于去执行一次单独的查询。 另一方面,如果你拥有一个要从几个看似很小的表中频繁地检索数据的应用,你应该考虑创建一个足够大缓冲池来存放所有在这些表里免得数据。 采用这个设计方案,数据能一次装入内存,并且允许它反复的被获取而没有必要额外的磁盘I/O .
表空间
数据库管理的一个重要部份包括通过使用表空间来完成逻辑数据库设计到物理存储的映射。 DB2 UDB 使用二种类型表空间: 系统管理表空间(SMS) 和数据库管理表空间(DMS)。使用SMS 表空间,操作系统的文件管理器负责分配和处理表空间使用存储空间。 使用DMS表空间,表空间创建器(或者,在某些情况下是DB2 数据库管理器) 负责分配空间, DB2 数据库管理器负责管理。性能通常是以DMS 表空间来获得快速的相应。 但是,SMS 表空间没有大小限制(16,777,215 页) ,在这点上不同于DMS 表空间。 SMS 表空间还更加容易管理,在许多情况下,因为在需要时系统可以自动地获取额外的存储空间。通常DMS 表空间被用于那些频繁地的表,但增长很慢。SMS 表空间一般被用于那些连续增长的表。
早些时候,我提及过数据是在表空间存储容器之间传送(譬如文件系统目录、文件和裸设备)并且缓冲池是被称之为页的一些分离块组成。DB2 UDB 提供四不同页面大小(4KB 、8KB 、16KB ,和32KB) 。缺省情况下在数据库创建过程期间产生的三个表空间(SYSCATSPACE, USERSPACE1和 TEMPSPACE1) 被分配4KB 页面大小。各个表空间必须与缓冲区结合;一个特殊表空间所使用页面大小必须与它关联的缓冲区的页面大小相匹配。 另外,如果你创建可一个页面大小是4KB之外的一个表空间,你应该创建一个使用同样页面大小的系统临时表空间。否则,在执行一个需要临时表空间的操作时性能可能会降低(譬如排序和表重组)。
当表空间横跨多个容器时,数据将会用round-robin方式写入每个容器。所谓扩展长度的属性是控制当数据要写入列表中下一个容器之前在一个容器中写多少页数据。这种方法有助于对属于所给定表空间的所有容器之间的数据平衡。
为了减少查询的相应时间,DB2数据库管理器使用了一种被称之为prefetching的技术去检索(或取得)那些数据库管理器确定用户可能需要在实际执行之前的数据。(数据与需要的实际页一起被复制到缓冲区;表空间的prefetch 大小将决定在响应一个查询时有多少额外的数据页被复制到缓冲池里。)
缺省的,所有表空间被创建成extent和prefetch均为32页的大小。你通常可以通过超过这个缺省的extent和prefetch大小来改进整体性能。以下二个算式将确定适当的extent大小:
Min Extent Size = [Number of physical disks used by the tablespace * 4096 (bytes)] / Tablespace Page Size (in bytes)
Max Extent Size = 524288 (bytes) / Tablespace Page Size (in bytes)
(如果你感觉象你以前从未看了这些等式或者是我提供的prefetch的大小,这都是正常的现象。因为我没有在任何IBM 指南或文献中发现它们。相反的,这些是我作为DB2 UDB 性能组的成员在多伦多IBM 实验室工作期间研究出来的结果。)
最合适的extent大小应该是计算出来的最小值与最大值中间某处的值。切记,对于extent的大小,更多不一定意味着更好。在理想状态下,你在从最小值向最大值过渡的过程中会发现一个合适的extent大小,运行性能测试和评估每次设置的结果。注意,extent大小在表空间创建以后无法修改, 所以,在每次测试的时候表空间将必须删除,再创建并且重新计算。
一旦你决定了extent的大小,你就可以通过下面的方程来得到prefetch 大小:
Min Prefetch Size = (Extent Size * Number of Containers Used) * Factor
Factor是一个常量,一般为3。
对于prefetch大小,与extent不同的是它在通常状况下比较好。
分离数据
仔细查看在一个DB2UDB数据库里面大多数数据是如何存放你就会发现这里有三种不同的对象:常规用户数据存储为数据对象;索引数据联系了在表中定义了的索引信息存储为索引对象;长字段数据被存储成一个长字段对象 (长字段对象只存在于表包含一个或多个长数据列中——LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB) 。如果采用DMS类型的标空间,这些对象分开地被存放并且每个都被存放在它自己的单独表空间里面。在缺省情况下,这三个对象都被存放在同一个表空间里; 但是,性能可能通过将数据分别存放在上述三种类型的表空间中存放时常得到改善。
关于db2empfa
在SMS 表空间,文件系统(而不是DB2 数据库管理器)负责在需要时分配额外的存储空间。并且在缺省情况下,SMS 表空间每次扩展一页。但是,在某些工作负荷下(例如,当进行一次大批量的插入操作)它也许倾向于使用在extent中分配的存储空间而不是页。这就是db2empfa工具起了作用。 当db2empfa运行的时候, 数据库配置参数multipage_alloc被设置位YES(虽然它是一个只读配置参数),它会导致 DB2 UDB 每次扩展SMS 表空间一个extent而不是一页。db2empfa工具在DB2安装路径下的SQLLIB/Bin目录里面。
索引与性能
索引的主要目的就是帮助DB2 数据库管理器快速的从表中查出记录。为表中经常被使用的列创建索引通常有助于数据存取和更新操作性能的改善。此外,索引还考虑到当多重事务处理在同一时间里访问同一个表时候的更好的并发性;这样,行检索更加快速并且锁迅速被获取而且不必担心它长期的挂起。但是这些优势需要成本。索引会占用数据库空间,并且它们可能导致在插入和更新操作执行过程的轻微型能降低。 (所有插入操作和部分更新操作必须发生在表和它对应的索引中。)
那么怎么才能告诉你是否创建索引将改进性能?DB2 UDB 8.1封装了一个工具包来协助你,它可通过控制中心访问。它被称为设计顾问,它会捕获关于数据库的典型工作负荷以及推荐修改的特定信息,譬如根据提供的信息可以去创建新索引或删除未使用的索引。
RUNSTATS工具与性能
每当SQL语句被发送到到DB2 数据库管理器中处理时,SQL 优化器会去读取系统编目表来确定被引用的列的特性以及在被引用的表中时候已经定义了索引,同时被语句引用的每个表的大小也包括在内。根据这些得到的信息,优化器可以估算出能满足SQL语句需要的每一种数据存取路径的成本,然后推荐最佳的一个。 优化器用于做决策的数据库统计集合数据在系统编目表中是一个关键性的元素。所以,统计的变化可能导致选择存取路径的变化;如果信息丢失或过时,优化器也许选择出来的存取计划将导致SQL语句执行时间比正常的要长。
拥有合法的信息在SQL语句的复杂性增加的时候变得更加关键。当只引用一张表(没有定义索引)时,优化器选择的数量是有限的。但是,当多个表被引用时(每个表都有一个或多个索引) ,那么可供优化器选择的数量会大大加大。但不幸的是,优化器所使用的统计信息是不会自动得保持更新。反而必须阶段性地通过使用运行统计工具(RUNSTATS)重新生成。可以通过控制中心和命令行两种方式执行RUNSTATS工具。语法如下:
RUNSTATS ON TABLE [TableName] < WITH DISTRIBUTION | WITH DISTRIBUTION AND < DETAILED >
INDEXES ALL | WITH DISTRIBUTION AND < DETAILED > INDEX [IndexName] > < SHRLEVEL [CHANGE
| REFERENCE] >
或者
RUNSTATS ON TABLE [TableName] < [AND | FOR] < DETAILED > INDEXES ALL |
[AND | FOR] < DETAILED > INDEX [IndexName] > < SHRLEVEL [CHANGE |
REFERENCE] >
TableName 是需要收集(或者更新)统计信息的表的名称。IndexName 是需要收集或者更新统计信息的索引的名称。
注:被显示在角括号里(< > )的参数是可选的;方括号([ ])中的参数是必须的。
例如,更新存储在系统编目表中的关于表DEFAULT.EMPLOYEE的统计信息。你可以执行以下命令:
RUNSTATS ON TABLE DEFAULT.EMPLOYEE WITH DISTRIBUTION AND INDEXES ALL SHRLEVEL CHANGE
运行统计工具不会输出信息。但是,你能通过查询系统编目视图SYSCAT.TABLES的CARD, OVERFLOW, NPAGES, FPAGES列来观看它的结果。(如果这些列的值是21,就意味着统计信息尚未对该行所代表的对象起作用。)
那么应该多久去收集表的统计信息呢?理想状况下,你应该在下面一些事件之后去使用运行统计工具:
·大量的插入、更新或删除操作
·导入操作
·装载操作
·在现有表中插入一个新的字段
·创建新索引
·表重组
每当表的统计信息被收集或更新的时候,所有引用它的程序包都要被重新与它绑定这样优化器就可以利用新统计信息并且在可能的时候,会指出它们所包含的SQL语句的更好的访问计划。 如果重新绑定失败或者忘记重新绑定这些程序包可能导致动态sql操作执行起来会比静态sql操作要快(译者注:我对此不太明白,询问别人后得到的解释是:静态可能采取的一个费时间的路线,数据变了但访问的策略没有变;重新绑定就意味着重新改变访问策略),相反也适用。
最后,将它们放到一起
对DB2 UDB 系统或任一复杂RDBMS的调优,为了得到最佳的性能将会是一个长的过程。在这一系列专栏我通过对数据库的分析,解释了性能问题是如何典型地出现从一个或更多的下列:
粗劣的系统(环境) 配置
粗劣的实例配置
粗劣的数据库配置
粗劣的数据库设计
粗劣的应用设计。
系统调优应该从DB2UDB注册变量,DB2 数据库管理器实例配置参量以及可能有对性能产生巨大影响的数据库配置参量开始。接下来再考虑缓冲池如何使用并且确定是否使用附加的缓冲池或不同的缓冲池大小会有所帮助。选择适当的表空间类型,extent大小和prefetch 大小,并且保持系统目录统计最新,最终完成基本性能调整。
发表评论
-
DB2系统命令
2011-08-10 15:11 2633DB2系统命令 1、dasauto在$DB2DIR/da ... -
db2查看当前模式的sql
2011-08-09 15:05 1307通过DB2提供的专用寄存器current sche ... -
db2中会导致表处于reorg pending状态的alter语句
2011-08-09 14:57 5008会导致表处于reorg pending状态的alter tab ... -
db2系统编目表的实践
2011-08-03 15:34 1002一 根据此命令导出全部需要进行统计的表--导出runstats ... -
db2认证
2011-07-19 09:29 1099在这里,我把IBM的认证相关的资料整理下,希望对大家有点帮助。 ... -
db2pd 使用(二)
2011-07-19 09:23 2839分析 DB2 for Linux, UNIX, and ... -
db2pd 使用
2011-07-19 08:53 1434db2pd 工具 用于监控 DB2 实例和数据库的新的 DB ... -
DB2 V9.7分区索引新特性
2011-05-26 16:35 1459在本文中将介绍 DB2 V9.7 ... -
db2的几个有用SQL
2010-11-04 14:47 978--查找函数SELECT * FROM SYSCAT.FUNC ... -
すばらしいnet ---------testpassport問題集のメリット
2010-09-17 14:16 838http://www.testpassport.jp/ ... -
DB2关于查看表空间是否启动了自动存储功能
2010-09-16 11:04 4006可以通过三种方式查看 进入命令行模式 d ... -
DB2约束
2010-09-09 09:53 1180DB2约束 DB2 约束用来对数据实施业务规则,主要 ... -
高级建表SQL
2010-08-16 09:15 882--建表AB 和已知表AA一样create table AB ... -
db2单表优化的命令
2010-08-16 09:04 1037reorg 和runstats 都是单个表优化 ... -
DB2常用语句总结
2010-06-03 16:41 810DB2常用语句 ... -
DB2使用笔记
2010-06-03 15:00 1504DB2使用笔 ... -
db2检索授权的SQL
2010-05-27 10:07 1009--检索具有特权的所有授权名 SELECT DISTINCT ... -
db2许可证
2010-05-27 09:54 1905许可证执行过程 1、windows下启动命令提示符。2、将目 ... -
[转载]DB2表合理映射到表空间
2010-05-26 08:18 1049在DB2数据库中,是 ... -
DB2 DATE 函数的使用一个陷阱
2010-05-19 09:27 4859DB2 DATE 函数的使用一个陷阱 1)DATE 函数正确 ...
相关推荐
3. 驱动类型:IBM DB2 ODBC驱动有两种类型——Client-Side Driver和Server-Side Driver。Client-Side Driver在本地计算机上处理SQL语句,适用于小型应用和低网络带宽环境。Server-Side Driver则将大部分处理工作交给...
这个压缩包文件包含了关于DB2 V9.5版本的各种技术文档,涵盖了性能调整、管理指南、数据迁移、备份与恢复、服务器快速指南、连接服务器、连接快速入门、系统监控以及安全等方面的知识。 首先,"DB2V9.5性能调整.pdf...
├ 第02周 DB2性能优化方法系统 │ │ 第2周 DB2性能优化方法系统.pdf │ │ 第二周 DB2性能优化方法系统.mp4 ├ 第03周 从监控开始 │ │ 第3周 从监控开始.pdf │ └ 第三周 从监控开始.mp4 ├ 第04周 配置参数...
3. **安装与配置**:掌握DB2的安装过程,包括选择适当的安装选项,配置数据库实例和调整性能参数。考生还需要了解如何进行数据库的备份和恢复。 4. **性能优化**:这包括查询优化、索引策略、SQL调优和数据库性能...
DB2性能优化包括索引设计、查询优化、内存调优和硬件配置调整。通过监控数据库性能指标,可以识别瓶颈并采取相应措施。例如,合理使用索引可以显著提升查询速度,而调整数据库缓冲池大小则可能改善内存使用效率。 ...
另外,监控和诊断工具是DB2性能优化的好帮手。例如,使用DB2顾问工具可以发现性能瓶颈,而DB2活动监视则可以实时查看系统状态,帮助定位问题。通过这些工具,我们可以获取性能指标,分析问题并采取相应措施。 最后...
SQL查询性能是DB2性能管理的核心。通过细致地分析SQL语句执行计划和实际执行情况,可以发现潜在的问题并采取相应的优化措施。具体步骤包括: 1. **使用EXPLAIN功能**:DB2提供了强大的EXPLAIN工具,用于展示SQL语句...
### DB2优化器详解:DB2数据库性能调整与优化的核心 #### 一、DB2优化器:数据库性能的指挥官 DB2优化器是IBM DB2数据库管理系统中的关键组件,负责决定如何高效地执行SQL查询和其他数据库操作。其核心职责是在...
8. **性能调优**:了解如何监控和调整DB2的性能,以适应高并发和大数据量的环境。 通过这个视频教程,无论是数据库管理员、开发人员还是业务分析师,都能对IBM DB2有一个全面而深入的认识,从而更好地利用这个强大...
《牛新庄-db2数据库性能调整优化》这本书深入探讨了DB2数据库的性能优化技术,是DB2数据库管理员和开发人员的重要参考资料。DB2作为IBM公司的一款企业级关系型数据库管理系统,广泛应用于金融、电信、制造等多个行业...
【IBM DB2 基本性能调整】 IBM DB2 是一款强大的关系型数据库管理系统,其性能调整对于确保高效的数据处理至关重要。本篇文章主要探讨的是如何对IBM DB2 的基础性能进行优化,特别是围绕缓冲池这一关键组件进行深入...
12. **性能优化(Performance Tuning)**:DB2 UDB提供了多种工具和技术,如SQL调优顾问、索引顾问和缓冲池调整,帮助用户优化数据库性能。 13. **备份与恢复(Backup and Recovery)**:DB2 UDB提供全面的备份和...
【IBM DB2 V9 性能调优】是数据库管理员和IT专业人员关注的重要主题,尤其是在大型企业中,高效的数据管理对于业务运行至关重要。IBM DB2 V9 是一个功能强大的关系型数据库管理系统,其性能优化涉及到多个层面,包括...
### DB2性能监控知识点 #### 一、DB2 V9.7概述 - **版本信息**:本资料针对的是DB2 V9.7版本,这是一个由IBM公司开发的关系型数据库管理系统。 - **适用平台**:支持Linux、UNIX及Windows等多种操作系统。 #### 二...
IBM DB2是一款强大的关系型数据库管理系统,由IBM公司开发,广泛应用于企业级的...通过本快速入门指南,你可以掌握基本的DB2服务器操作,进一步深入学习可以参考IBM官方文档和其他专业资料,提升数据库管理和维护技能。
IBM DB2是一款由IBM公司开发的关系型数据库管理系统(RDBMS),广泛应用于企业级的数据存储和管理。在Java编程环境中,我们通常会使用IBM提供的JDBC驱动程序来连接和操作DB2数据库。"IBM_DB2_jar"这个压缩包正是包含...
IBM专家张原在"DB2性能调优入门"中,深入浅出地讲解了DB2性能优化的基本概念、方法和工具,旨在帮助初学者快速掌握这一领域的核心知识。 1. **性能调优概述**: - 性能调优的目标是通过调整数据库配置参数、SQL...
使用IBM提供的管理和监控工具,如DB2 Control Center或db2pd,可以定期检查数据库性能、内存使用情况、磁盘I/O以及查询执行情况,及时发现并解决问题。 总之,IBM DB2通用数据库在64位平台上的应用,提供了强大的...
接下来,IBM DB2 731认证,全称为"IBM Certified Advanced Database Administrator - DB2 11 for Linux, Unix, and Windows", 是730认证的进阶版,适合有经验的数据库管理员。这个认证更注重高级功能和复杂情况的...