db2对缓冲池的性能优化

合集下载

DB2性能优化

DB2性能优化

• 数据库指标
• CPU使用率、内存使用率 • 高峰期IO吞吐量和IOWAIT • SQL平均执行时间和数据量
8
© 2010 IBM Corporation
性能优化原则 – 性能模型
• 保持数据库的最佳性能必须保证CPU、I/O和内存间的平衡
在理想情况下,这个三角形应该是一个等边三角形,使系统资源达到完美平衡。在DB2服务 器端调优时,应该考虑资源是否平衡再做出调优决策。例如,调整一个数据库的排序性能, 如果只调整内存(减少排序堆),将会使用临时表导致CPU和I/O使用率上升。最小化排序 相关的I/O,需要增加分配给排序堆的内存和提高CPU使用率。
OLTP系统主要有内部系统和外部系统两类。
内部系统:面向公司内部人员使用,并发量较小,功能和性能问题不会造成太多 的负面影响,如OA系统。 外部系统:面向公众、客户使用,并发量很大,一般为内部系统的几十倍到几 千倍,功能和性能问题会造成严重的负面影响,如网银系统、网上支付系统。
• OLAP系统:OLAP系统面向管理、决策层人员,数据来源于OLTP系统,通过
• 死锁和锁等待
5
©
• 影响系统正常运行
• 交易高峰期,系统资源使用率持续接近100%
• 交易高峰期,IO吞吐量接近存储极限,存储报警
• 当前性能不能满足业务要求
• 非高峰期,交易性能差
• 高峰期,交易性能差
• 日终作业未在规定时间窗口内完成、生成日志过多
• 建立性能/配置/效率的模型
• 未来业务发展必要时,进行扩容的依据
7
© 2010 IBM Corporation
性能优化概述 – 优化目标
• 优化考虑要素
• 性能底线
• 优化代价、时间、效果 • 优化后的性能能否支撑业务发展 • 制定可行的中短长期优化计划

DB2数据库的简单优化

DB2数据库的简单优化

内存配置优化a) 缓冲池(Buffer Pool)增加缓冲池大小以减少磁盘I/O:sql代码:ALTER BUFFERPOOL IBMDEFAULTBP SIZE 250000为不同的表空间创建专用缓冲池:sql代码:CREATE BUFFERPOOL BP_USERDATA SIZE 100000 PAGESIZE 32K b) 排序堆(Sort Heap)调整SORTHEAP参数:sql代码:UPDATE DB CFG FOR database_name USING SORTHEAP 1024 c) 包缓存(Package Cache)增加PCKCACHESz参数:sql代码:UPDATE DB CFG FOR database_name USING PCKCACHESz 640 I/O 优化a) 预读(Prefetch)调整PREFETCHSIZE参数:sql代码:UPDATE DB CFG FOR database_name USING PREFETCHSIZE 32 b) 异步I/O启用DFTDBHEAP参数:sql代码:UPDATE DB CFG FOR database_name USING DFTDBHEAP AUTOMATIC日志配置a) 日志缓冲区增加LOGBUFSZ参数:sql代码:UPDATE DB CFG FOR database_name USING LOGBUFSZ 1024 b) 日志文件大小调整LOGFILSIZ参数:sql代码:UPDATE DB CFG FOR database_name USING LOGFILSIZ 16384 锁管理a) 最大锁数增加MAXLOCKS参数:sql代码:UPDATE DB CFG FOR database_name USING MAXLOCKS 20 b) 锁列表大小调整LOCKLIST参数:sql代码:UPDATE DB CFG FOR database_name USING LOCKLIST 8192 并发控制a) 最大应用程序数增加MAXAPPLS参数:sql代码:UPDATE DB CFG FOR database_name USING MAXAPPLS 400 b) 代理数调整NUM_POOLAGENTS参数:sql代码:UPDATE DBM CFG USING NUM_POOLAGENTS 100统计信息收集a) 自动统计信息收集启用AUTO_RUNSTATS:sql代码:UPDATE DB CFG FOR database_name USING AUTO_RUNSTATS ON b) 统计信息采样调整统计信息采样率:sql代码:UPDATE DB CFG FOR database_name USING AUTO_SAMPLING YES 查询优化器a) 优化级别设置OPTLEVEL参数:sql代码:UPDATE DB CFG FOR database_name USING OPTLEVEL 5表空间管理a) 自动存储启用自动存储:sql代码:CREATE TABLESPACE ts_name MANAGED BY AUTOMATIC STORAGE b) 表空间扩展设置自动扩展:sql代码:ALTER TABLESPACE ts_name AUTORESIZE YES索引优化a) 索引重组定期重组索引:sql代码:REORG INDEXES ALL FOR TABLE table_name分区表对大表使用分区:sql代码:CREATE TABLE table_name (...) PARTITION BY RANGE(column_name) (...)压缩启用表压缩:sql代码:ALTER TABLE table_name COMPRESS YES并行度调整INTRA_PARALLEL参数:sql代码:UPDATE DB CFG FOR database_name USING INTRA_PARALLEL YES 监控和诊断a) 启用活动监控:sql代码:UPDATE DBM CFG USING DFT_MON_BUFPOOL ONUPDATE DBM CFG USING DFT_MON_LOCK ONUPDATE DBM CFG USING DFT_MON_SORT ONUPDATE DBM CFG USING DFT_MON_STMT ONb) 使用db2top工具实时监控性能c) 定期检查db2diag.log文件。

DB2数据库性能优化

DB2数据库性能优化

DB2数据库性能优化DB2问世于1983年,其被贴上的标签之一就是:最早使用SQL(同样最早被IBM 开发)的关系型数据库产品。

此前,IBM已经有了一个层次性数据库产品,在当时已属数据库中的"大哥大",所以当发布关系型数据库时,IBM为自己的数据库产品排座次,新的数据库产品理所当然的是数据库二代,也被大家戏称为"库二代",就这样,DB2的命名也就被人们接受了。

实际上,DB2的渊源可以追溯至上世纪70年代初,那时还是个登月的年代,阿波罗登月的壮举时刻激励科学家们开拓创新。

当时在IBM工作的考德(E.F.Codd)博士在1970年6月用划时代的论文描述了关系型数据库理论,这使得后来诞生的"库二代"被赋予了强有力的数学基础和逻辑基因。

接下来,IBM把对E.F.Codd想法的实施交给了一个程序小组,这个程序小组使用SEQUEL作为查询语言。

当IBM公布其第一个关系型数据库产品时,对SEQUEL重新命名,这就是后来大名鼎鼎的SQL。

而在那一段时间,刚遭受离婚重创的犹太人Larry Ellision也发现了其中的秘密,他创立的Oracle,着实与DB2经历了一起"穿开裆裤"的起步阶段,之后你追我干30年,成为一组最有趣的竞争对手。

在上世纪80年代,DB2作为一个全功能的数据库管理系统,被IBM大型机所专用。

到了上世纪90年代早期,IBM将DB2带向了其它平台,包括OS/2、UNIX以及Windows服务器,然后是Linux和手持设备。

让大家一目了然的是,DB2 所有的产品都要被命名为"产品 for 平台"(例如,DB2 for OS/390)。

进入上世纪90年代中期,IBM发布了一组最初应用在AIX上的被称为DB2 Parallel的版本,此版本通过无分享(Share Nothing)架构而提供更强的伸缩性,即将一个大型数据库,分布到多个服务器上。

DB2 最佳实践-性能调优和问题诊断最佳实践

DB2 最佳实践-性能调优和问题诊断最佳实践

DB2 最佳实践: 性能调优和问题诊断最佳实践,第1 部分性能调优从配置和监控开始2009 年 3 月12 日本系列介绍了DB2 系统性能的最优方法,分两部分。

第一部分首先介绍为了达到良好性能,我们如何从软硬件配置方面来保障,紧接着讨论了在多种在操作和故障诊断的情况下,有助于我们了解系统性能的监控方法。

第 2 部分我们介绍在出现性能问题时如何逐步地、有条不紊地去处理它们。

内容提要大多数DB2 系统都经过了性能的演变。

首先,不论出于硬件还是软件的观点,该系统首先要能被配置。

在多数情况下,这将成为系统在实施后如何运行的基础。

其次,系统一经发布,勤勉的数据库管理员(DBA)将监控系统的性能,来监测任何可能的开发问题。

如果发现任何问题,我们就进入下一个阶段- 故障诊断阶段。

每个阶段都是基于上一阶段,如果没有适当的准备,我们极有可能需要处理比较困难的问题。

本文介绍了DB2 系统性能的最优方法。

我首先涉及到一些有助于我们确保良好软硬件性能的重要原则。

然后我们讨论多种在操作和故障诊断的情况下,有助于我们了解系统性能的监控方法。

最后,尽管我们做了最好的准备,性能问题仍然可以降临到我们身上,我们讨论如何逐步地处理它们,并有条不紊的进行。

回页首简介任何形式的性能问题都将严重影响并降低一个系统对你组织的价值、削弱业务能力、服务中断、以及增加管理开销。

所有这些都会提升总的拥有成本。

缺乏对系统配置的基本原则,监视和性能故障诊断可能导致不同程度的性能低下,并且降低对于组织的价值。

因此,在前期花些时间去考虑基本的配置指导方针和建立健全的系统监控这样的做法,将使你对处理许多可能出现的典型性能问题,有充分的准备。

并使数据服务器得以高性能运行,以提高投资回报率。

回页首第一步:从配置上实现性能良好像InfoSphere 平衡的仓库(BW)这类的DB2 部署类型,或者那些在SAP 系统之内的系统,配置都是高度确定的。

在BW 案例中,像CPU 个数、内存对 CPU 的比率、硬盘的个数和配置这样的硬件因素,以及在预先指定版本的基础上,详尽的测试,以确定最优配置。

DB2培训讲义_DB2性能优化入门

DB2培训讲义_DB2性能优化入门

DML性能问题:查询优化
同时还要考虑到 RUNSTATS/REORG 因素。 RUNSTATS 命令可以更 新表中的统计信息。当表中的数据经过频繁的增删改后其相应的统计 信息会发生变化,而优化器选择执行计划的时候是根据这种统计信息 来计算的,所以运行 RUNSTATS 此时显得尤为重要。 REORG 可以 整理数据存储的物理结构,也能减少数据扫描的时间,提高查询的性 能。 从存储方面应当注意的是选取裸设备的 DMS 要比 SMS 性能要好,因 为它少了一层文件系统的缓冲而直接访问缓冲池。
学会使用 optimize for n rows 子句,它可以提高前面 n 条记录的显示 速度。这样可以使用户能够先快速查看这 n 条记录,然后再看其他纪 录。减少了用户的等待时间。
DML性能问题:查询优化
针对复杂查询时可以将数据库配置参数 DFT_QUERYOPT( 缺省查询 优化类 ) 的值设得高一些(7 或 9),针对简单查询可以将它设得低一 些 (3 或 5),因为设置越高优化器所作的分析就越深入,耗费在生成计 划上的时间就越多。 针对 C/S 结构的查询可以将查询语句写在服务器端生成存储过程来减 少数据的网络传输以及客户端的压力。而经过编译的存储过程执行得 更加高效。
DB2培训讲义
性能优化入门
有关的概念
DB2 性能优化的三个方面
内存 CPU I/O
内存因素
在内存方面,主要是考虑缓冲池 (BUFFERPOOL) 的使用。缓冲池是 一片用来缓冲从磁盘上读取的数据和索引的内存区域,这些数据和索 引信息在缓冲池中进行运算后最终还要写回磁盘。缓冲池的页面大小 有四种 (4K,8K,16K,32K),分别对应四种不同页面大小的表空间。缓冲 池的大小决定了能够从磁盘上缓冲数据的容量大小。当然缓冲池也不 是越大越好,缓冲池过大可能会导致连接数据库的时间过长,因为在 连接数据库时要为数据库的缓冲池分配内存空间。可以通过计算缓冲 池的命中率来评估缓冲池的使用效率:缓冲池命中率 =(1-(( 数据物理 读 + 索引物理读 )/( 数据逻辑读 + 索引逻辑读 ))) *100%,缓冲池命中 率越大说明缓冲池的使用效率高。缓冲池命中率太小说明缓冲池太小 应当调大。其中的数据物理读,索引物理读以及数据逻辑读和索引逻 辑读都可以从缓冲池的快照中获取。

DB2数据库设计:取得最佳性能的准则-电脑资料

DB2数据库设计:取得最佳性能的准则-电脑资料

DB2数据库设计:取得最佳性能的准则-电脑资料在开发过程的早期作出的很多设计决定对DB2应用程序和数据库的性能有着巨大的影响,。

本文为在z/OS环境中取得更好的性能提供了一些一般性的指南和建议。

一、简介本文的目的是为IBM业务伙伴提供关于DB2 Universal Database?(UDB)for z/OS(后面将简称为DB2)环境中DB2数据库性能的重要信息。

本文试图从多处收集材料,并尽可能有效地将它们表述出来。

本文无意包含很全面的范围,也不会包含很深的细节。

我曾打算讨论对DB2数据库的性能影响最大的一些因素。

但是,并不是所有可能的情形都可以预测到,也不是所有潜在的考虑都能顾及到,更不用说在期望的范围内对它们进行描述了。

我希望本文可以为不同环境下的DB2用户提供一个通用的指南,以帮助他们取得最佳的DB2数据库性能。

本文的目的是成为一个良好的起点,用以处理任何给定安装环境下的数据库性能问题。

本文的范围是数据库设计性能。

DB2性能远不止这一部分,它肯定要受到数据库设计以外的很多因素的影响。

例如,程序的编码逻辑和其中使用的实际的SQL语句,可以列为应用程序设计一类。

DB2系统性能可以包括诸如安装选项、缓冲池大小设置、DB2相关地址空间的调度优先级等等之类的因素。

本文的焦点是DB2数据库的设计。

不过,有时候这些性能因素类别之间的界线可能会有些模糊。

例如,在某种安装环境下进行配置时,缓冲池大小的设置和数量的选择通常被认为是一项系统性能因素。

但是,倘若是将特定的表空间和索引指派给那些缓冲池,那么这些因素又可以看作是数据库设计一类的因素了。

在这里,我假设读者对z/OS环境中的DB2有一个基本的理解。

本文的头几页将讨论性能管理的一些基本概念和准则,以便进行“级别设置” 。

我的建议有点综合的性质,因而不会总是详细地给出技术性的描述和语法。

读者如果想了解关于这些内容的更详细的信息,那么应该去阅读关于用户本地所安装的DB2版本的最近的IBM文档。

(转)Db2数据库性能优化中,十个共性问题及难点的处理经验

(转)Db2数据库性能优化中,十个共性问题及难点的处理经验

(转)Db2数据库性能优化中,⼗个共性问题及难点的处理经验为了帮助⼤家更好地进⾏DB2的性能优化,社区组织社区专家针对⼀些共性问题及难点分享经验。

以下内容来⾃活动“Db2数据库性能优化经验交流”,主要由以下社区专家及会员分享:leilin、topzgm、岳彩波、beyondmch、yellow-fin等提醒:⽂章末尾有彩蛋,如果你是Db2达⼈,可不要错过~01如何发现性能问题?通过什么定位?1、收集信息。

2、分析3、找到问题点解决第⼀步操作系统级别性能CPU监控:ps -elf | sort +5 -rn | more 第6列代表CPU使⽤的计数器I/O使⽤率:iostat -D 收集磁盘I/O信息内存占⽤率:讨论的内存指的是虚拟内存(virtual memory),包括物理内存(physical memory)与交换空间(swap space)vmstat -> avm 当前系统中已经激活的虚拟内存页的数量(该数值不包含⽂件系统缓存)vmstat -> fre 系统中平均空闲页的数量(不能完全代表系统中可⽤的空闲内存:⽂件系统缓存驻留内存,并不会返还给空闲列表,除⾮被虚拟内存管理器盗取)svmon -> clnt与in use交叉项代表有多少内存被⽂件系统使⽤(加上free项,可以初步认为是该系统中可以被应⽤程序所使⽤的内存)第⼆步数据库级别性能1. db2grep -dump | more 查看服务器安装了⼏个DB2版本2. ps -elf | grep db2inst1 查看数据库进程的CPU计数器3. db2 get dbm cfg | grep -i dft_mon 确认快照打开4. 实例级快照,了解当前实例有多少应⽤程序在执⾏db2 get snapshot for database manager -> Remote connections & Local connections5. 数据库级快照连接数信息:applications connected currently,appls executing in db manager currently锁信息:锁总数,锁等待数量,锁等待总时间,当前数据库锁列表占⽤内存,死锁次数,锁升级次数,锁超时次数排序信息:排序是CPU杀⼿,过多的排序会造成CPU的极⼤消耗;排序溢出是说,如果排序堆⽆法容纳排序数据,就会被溢出到临时空间;排序是⼀种状态,根源在SQL语句;数据索引I/O信息:逻辑读 DB2向缓冲池请求的次数逻辑读越多,需要的物理I/O就越少物理读如果请求的数据页不在缓冲池,需要从磁盘中读取数据页的次数吞吐量或事务信息:提交/回滚事务数,执⾏动态和静态语句次数,增删改查次数( rows read / rows selected ) 是⼀个⾮常重要的性能指标,它表⽰为了检索⼀⾏数据需要读取多少⾏,该值越⼤,表⽰代价越⾼,需要的I/O 越多,可调优的余地越⼤事务⽇志信息:⽇志I/O在很⼤程度上会影响数据库整体的性能6. 应⽤程序快照在数据库快照中发现存在⼤量的逻辑读,通过应⽤程序快照可以细化到某条特定的语句7. 表空间快照在数据库快照中发现存在⼤量的逻辑读,通过表空间快照可以轻松地定位哪个表空间被频繁使⽤8. 表快照如果发现⼀个表的页数很少,但是读的⾏数⾮常多,那么可以合理地猜测该表在某些查询语句中可能处于NLJOIN的内部⼦节点9. 动态SQL快照:SQL执⾏次数,总共读的⾏数,消耗的CPU,逻辑物理读数量,排序数量等第三步内存使⽤监控1. db2pd -osinfo系统内存使⽤情况2. db2pd -dbptnmem整个实例的内存使⽤情况3. db2pd -memsets内存段使⽤情况在实例中会有多个不同的内存段,每⼀个内存段中可能有⼀个或者多个内存池ipcs -a | grep 578814120 内存段映射到操作系统共享内存IPC段FMP与trace内存段很少造成性能问题4. db2pd -mempool深⼊内存池信息5. db2pd -db <dbname> -memsets / -mempool数据库级别内存段和内存池信息02优化过程中的优先级问题?在Db2优化过程中,我已知的有如下⼿段1.索引2.sql语句优化(分析执⾏语句后重写sql)3.runstats信息收集请问优化过程中,⼊⼿的优先级顺序是什么呢,还有其他⼿段吗?这“三板斧”已经可以解决很多问题了,DB2的优化⼿段很多,如果想深⼊了解,上传⼏个⽂件供参考。

DB2性能调节工作总结

DB2性能调节工作总结

DB2性能调节工作总结近期负责了Metric项目的服务器性能维护,对DB2的性能调节做了些研究。

整体感觉数据库调优的关键点应该还是在建库阶段,好的查询更能得到更好的性能。

而后期对数据库参数等的调节结果并不是非常明显的。

网上数据库调节方面的资料也很多,但大多数都是转来转去的,在此只做下我个人的工作总结;(//表示对上诉解释##表示对下面解释)############1,Monitoring##################db2 get database manager monitor switches//显示监视开关的情况db2 update dbm cfg using DFT_MON_BUFPOOL ONDFT_MON_LOCK ONdb2 update dbm cfg using DFT_MON_SORT ONDFT_MON_STMT ONdb2 update dbm cfg using DFT_MON_TABLE ONDFT_MON_UOS ONdb2 terminatedb2stopdb2start//在实例级打开监视开关,这样随着实例的重启,开关生效db2 get database manager monitor switchesdb2 get monitor switches//发现实例级和下面的数据库监视开关都打开了db2 deacivate database tp1db2 activate database tp1//重新激活数据库,刷新监视数据selectagent_id,rows_read,rows_written,rows_selected,rows_inserted from sysibmadm.snapappl//监视每个代理读写查询的情况,如果read的数量远高于select的数量,考虑是不是缺少索引//在我的工作中,很少遇到写多的情况,所以对这方面也没深入db2 get snapshot for tables on tp1 &gt; sntab1.txt//接下来监视tp1数据库下所有表的读写啦##下一步,就是抓到那个有大量读大于写的表,然后提取该表上的查询SQL##这里就要考虑两种情况了,是静态的还是动态的##@@@静态的,从包里提取db2bfd -s sqltp1st.bnd##@@@动态的,可以用snapshot SQL STATEMENT抓取,这里不写了//然后就要提取出我们关注的大量读的查询SQL//我不太喜欢这部,累眼睛,还烦琐!!!如果有大量查询SQL,还需要想办法自己找出db2 describe indexes for table acct show detail//然后就是从提出的SQL中找到表,从表中看有没有索引,没有的话,新建##之后呢,就可以从访问计划中看索引有没有生效##静态SQL可以用db2expln从包里弄,本人比较喜欢db2exfmt,因为动静SQL都可以弄##后面有db2exfmt关于动静的例子,我比较习惯把SQL statement拿出来##然后放进文本里,db2expln -d GTSSTGMS -f SQL.txt -g -z \; -o GTSSTGMS_sort.txt##或者,db2 connect to tp1##db2 set current explain mode explain##db2 set current explain snapshot explain##db2 "select name,address from acct where ......"##db2exfmt -l -d tp1 -o extp2.txt =&gt; vi extp2.txt############2,Talespace and I/OPerformance##################db2 select bpname,bufferpoolid,npages,pagesize fromsyscat.bufferpools//查看数据库的缓冲池,syscat.bufferpools中的bufferpoolid 字段和sysibmadm.snapdb_memory_pool//的pool_secondary_id是关联的,从后一张表中记载着用户用户间的缓冲池和系统自建的缓冲池//CURRENT_SIZE 当前大小;POOL_CONFIG_SIZE 设置大小;HIGH_WATERMARK 最高记录;//我发现,这和使用db2pd -db GTSSTGMS -mempools是对应的PhySz PhyUpBnd PhyHWM//使用db2pd -db GTSSTGMS -memset,将同类内存集合并计算//在这里插一段缓冲池自调节功能介绍@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@下面我们创建示例缓冲池MYBP1,其使用自调整功能(注意其create bufferpool语句使用了automatic),初始大小为400K,具体如清单4所示:创建使用自动自调整功能的示例缓冲池MYBP1db2 create bufferpool mybp1 immediate size 100 automatic pagesize 4kdb2 "select BPNAME, NPAGES from sysibm.sysbufferpools"当缓冲池启用了自调整功能时,该特定缓冲池的sysibm.sysbufferpools 表中的NPAGES 字段将设置为-2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

db2 对缓冲池的性能优化
博客分类:
DB2
db2 对缓冲池的性能优化
需求:因为项目开始的时候没有对DB2数据库进行深入的熟悉,所以造成项目后期做性能测试的时候,导致应用访问过慢,后来决定从数据方面做做一下性能优化,主要在于缓冲池方面。

解决方案:因为数据库中只有一个常规表空间表空间USERSPACE1和一个缓冲池
IBMDEFAULTDP(1G),所以决定重新再建一个大的缓冲池BP2,将USERSPACE1赋给BP2
CREATE BUFFERPOOL BP2 SIZE 2048 PAGESIZE 4K;
ALTER TABLESPACE USERSPACE1 BUFFERPOOL BP2;
附注:
以下为对网上资源学习后的一个总结:
1、表空间
I、数据存储层级关系:数据库-->表空间-->容器-->表,
II、表空间分类:
目录表空间
特性:每个数据库只有一个目录表空间,它是在发出CREATE DATABASE 命令时创建的.
目录表空间被DB2 命名为SYSCATSPACE,
用途:它保存了系统目录表;
常规表空间
特性:创建数据库时指定该表空间的缺省名为USERSPACE1。

长表空间是可选的,缺省情况下一个都不创建,
用途:保存表数据和索引、还可以保存LOB之类的长数据;
系统临时表空间
特性:随数据库创建的系统临时表空间的缺省名为TEMPSPACE1,
用途:用于存储SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据;
以上是由系统管理的空间(SMS),必须有一个
以下是由数据库管理的空间(DMS),可选
长表空间
用途:用于存储长型或LOB 表列,存储结构化类型的列或索引数据
用户临时表空间
用途:存储已声明的全局临时表
LOB(large object)的定义:
是一种用于存储大对象的数据类型,如医学记录(如X-射线)、视频、图像等。

LOB有三种类型:BLOB:Binary Large Object、
CLOB:Character Large Object、DBCLOB:Double-byte Character Large Object。

每个LOB可以有2GB
III、页大小(暂无):
IIII、创建表空间:
最有效的表空间设置属性:PAGESIZE(表空间大小)、EXTENTSIZE(将数据写入到下一个容器之前写入到当前容器中的数据的页数)和PREFETCHSIZE(预取)
CREATE TABLESPACE 语句的示例
下列语句将创建一个常规表空间。

所讨论的所有设置都是为了进行说明。

CREATE TABLESPACE USERSPACE3
PAGESIZE 8K
MANAGED BY SYSTEM
USING ('d:\\usp3_cont1', 'e:\\usp3_cont2', 'f:\\usp3_cont3')
EXTENTSIZE 64
PREFETCHSIZE 32
BUFFERPOOL BP3 --指定缓冲池
OVERHEAD 24.1
TRANSFERRATE 0.9
查看表空间
list tablespaces
查看表空间详情
list tablespaces show detail
查看单个表空间的物理路径(根据表空间标识)
list tablespace containers for 2
2、缓冲池
I、物性:一个缓冲池可以被多个表空间使用,但一个表空间只能使用一个缓冲冲,并且他们的页大小要一致
II、缓冲池的缺省大小是BUFFPAGE 数据库配置参数所指定的大小,但是可以通过在CREATE BUFFERPOOL 命令中指定SIZE 关键字来覆盖该缺省值
(查询数据库配置属性命令:db2 get db cfg for <dbsname> //当前数据库可以省略)
III、创建缓冲池
CREATE BUFFERPOOL 语句的示例
CREATE BUFFERPOOL BP2
SIZE 2000
PAGESIZE 8K
将表空间加载到缓冲池中
ALTER TABLESPACE USERSPACE3 BUFFERPOOL BP2;
删除缓冲池
DROP BUFFERPOOL BP2;
修改缓冲池大小
ALTER BUFFERPOOL "BP2" IMMEDIATE SIZE 5000;
查看缓冲池属性
SELECT * FROM SYSCAT.BUFFERPOOLS
SELECT TBSPACE,BUFFERPOOLID FROM SYSCAT.TABLESPACES --查询表空间与哪个缓冲池相关联。

相关文档
最新文档