




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简介理解db2如何使用内存,可以防止过度分配内存,并有助丁对内存的使用进行调优,从而 获得更好的性能。db2 v9引入了口动口调整内存管理,口适应的口调整内存功能通过口动设置内存配置参 数值以及调整缓冲池大小來简化内存配置任务。启用此功能后,内存调整器就会在儿个内存使用 者(包括:排序、程序包高速缓存、锁定列表和缓冲池)z间动态地分配可用内存资源,从而简 化了内存配置参数调整的工作量。在db2v9z前,数据库的内存配置参数和缓冲池都是由管理员手工设置的。而数据库的 工作负载很少是静态的,而是动态变化的。比如,当工作负载类型发牛变化(由事务型变成了混 合型等)、用户增加、维护任务的运行或者其它应
2、用程序消耗的资源变化等,都会造成工作负载 在不停的变化。因此,即便是资深的数据库管理员调优过的系统,在另一个时候也未必是最优的。 数据库管理员需耍根据变化随时做出调整,工作量人而效呆也不明显。变化可能在很短的时间内 发生,因此留给数据库管理员作出响应的时间很短。数据库内存设置尤其容易受这些变化的影响, 因而会严重影响响应时间。二、db2内存结构数据库管理器共享内存(包括fcm)监觇陆堆(mon_hqap_sz)审计缓冲区大小audit_buf_sz)数据库全局内存(dalbbase memory)实用程序堆< util_heap sz)共享排序的排序堆阈值 (sheapthres shr
3、)数据库堆(dbheap)备份缓冲区排序堆(sortheap)ii 志缓冲!>< ogbufsz)程序包商速缓存 (pckcachesz)锁定列农(tockiist)塩冲区池h录ift速缓«< cataiogcache sz j应用程序全局内存(appl memory 共享应用程序内存转定于应用程序的内存应用程序堆 applheapsz)统计 1s 息堆(stat_heap _sz >语句堆(stmtheap)代理程序专用内存代理程序堆栈< agent_stack sz)&用排序的排序堆網值 (shoapthres)java 堆i ava hea
4、p szifit序堆(sortheap)客户机i/o块(qcioblk)(訓除)代理程序/应用程序共享内存应用程洋支持层堆客户机i/o块(aslheapsz)i rqrtoblk)(本地)注意匕柢大小不施指示内存的相关大小.db2在4种不同的内存集(memory set)内拆分和管理内存。这4种内存集分别是: 实例共/内存(instance shared memory) 数据库共享内存(database shared memory) 应用程序组共享内存(application group shared memory)(略) 代理私有内存(agent private memory)1. 实例共享
5、内存每个db2实例都有一个实例共享内存。实例共享内存是在数据库管理器启动(db2start)时分配的,并随着数据库管理器的停止(db2stop)而释放。这种内存集用于实例级的任务,例如监控、审计和节点间通信。获収配置命令:db2 get dbm cfg$ db2 get dbm cfgdatabase monitor heap size (4kb)(mon_heap_5z) = automatic(90)java virtual machine heap size (4kb) (java_heap_sz) = 2048audit buffer size (4kb)(audtt_buf_sz)
6、= 0size of instance shared memory (4kb) (instance_memory) = automatic(3433509)agent stack size(agent stack 5z; = 1024sort heap threshold (4kb)(sheapthres) = 0directory cache support(di:r_cache) = yespx r pa o a m w霁by p/pi t u c s r a e p n t m o sr- 1 e t ud a qa c e or se2a ci tl s y.l b t p( u 3e
7、 ed h z eze (4kb)(aslheapsz) = 15es)(rqrioblk) = 327671t1es(util.impact.lim) = 10priority of age msagent pool sizetnitial number of agents in pool max number of coordinating agents max number of client connect!ons(agentpri) = system(numpool age nts) = automatic(100)(num.initagents) = 0(max.coordagen
8、ts) = automatic(200) (max.connections) = automatic(max.coordagents)instance_memory 默认值是 automatic。可以使丿ij下面的命令來确定它的值:db2 attach to instance name (英中 instance name 是实例的名称)db2 get dbm cfg show detai 1database monitor heap size (4kb)java virtual machine heap size (4kb) birffar(dkr)size of instance share
9、d memory (4kb) agent stack size_sort heap threshold (4kb)directory cache support(mon-heap.sz) = automatic(90) (java_heap_szj = 2048 alldttjuf(instancejemory) automatic(34 33509) (agent_stack_sz) - 1024(sheapthres) = 0automatic(90) 2048cautomatic(3433509)1024(dir.cache) = yesapplication support layer
10、 heap size (4kb) (aslheapsz) max requester i/o block size (bytes)(rqrioblk)workload impact by throttled utilities(util_impact_lim)priority of agents agent pool size initiai number of agents in pool max number of coordinating agents max number of client connections 1515 3276732767=1010yes(agentpri) =
11、 system(num.poolagentsj = automatic (100)(num.initagents) 0(max_coordagents) automatic (200) (max-connections) = automatic(max-coordagents)systemautomatic(100)0automatic(200)automatic(max.coordagents)上面的输出表明冇13. 6gb的内存被预留给实例共亨内存集(3433509页*4096字节/页): instance_mcmory参数只是设置了实例共享内存的限制,它并没有说出当前使用了多少内存。要
12、查明一个实例的内存使用情况,可以使用db2内存跟踪器工具db加trk。例如,db2mtrk i -vdb2inst3perf234 $ db2mtrk -1 -vtracking memory on: 2015/02/26 at 16:17:28memory for instaneeother memory is of size 13041664 bytesfcmbp heap is of size 851968 bytesdatabase monitor heap is of size 196608 bytestotal: 14090240 bytes上面的例子表明,实例内存只用到了大约14
13、mb0那么还有很大一部分内存哪去了?答案是 instance_memory 包含了 databasejnemory 总和的限制。2. 数据库共享内存每个数据库有一个数据库共享内存集。数据库共享内存是在数据库被激活或者第一次被连接上的 时候分配的,在数据库处于非激活状态时释放(如果数据库先前是处于激活状态)或者最后一个 连接被断开的时候释放。这种内存用于数据库级的任务,例如备份/恢复、锁定和sql的执行。utility heap (util_heapsz)hidden bufferpools32kcatalog cache(catalogcache_sz)main bufferpool(s)sh
14、ared sorts (sheapthres_shr)package cache (pckcache_sz)lock heap (locklist)database heap (dbheap) includes log buffer (logbufsz)完整的绿色方框意味着,在数据库启动的吋候,该内存池是完全分配的,否则,就只分配部分的 内存。获取配置命令:db2 get db cfg for tsodb2inst3perf234 $ db2 get db cfg for tsoself tuning memory(self_tuningjviem) = onsize of database
15、shared memory (4kb) (databaseemory) = automatic(750980) database memory threshold(db_mem_thresh)=10max storage for lock list (4kb)(locklist)=automatic(6208)percent, of 1ock 1ists perapplication(maxlocks)=automatic(97)package cache size (4kb;(pckcachesz)=automatic(25575)sort heap thres for sharedsort
16、s(4kb)(sheapthres_shr)=automatic(41473)sort list heap (4kb)(sortheap)=automatic(8294)database heap (4kb) catalog cache size (4kb)log buffer si ze (4kb) utilities heap size (4kb) buffer pool size (pages)sql statement heap (4kb) default application heap (4kb) application memory size (4kb) stati sti cs
17、 heap si ze (4kb)(dbheap) = automatic(2540)(catalogcac h e_sz) = 300(logbufsz) = 256 (util_heap_sz) = 73933(buffpage) = 1000(stmtheap) = automatic(4096) (applheapsz) = automatic(256) (appljviemory) = automatic (40000) (stat_heap_sz) = automatic(4384)1) 主缓冲池(main bufferpools)数据库缓冲池通常是数据库共享内存中最人的一块内存。
18、db2在其中操纵所有常规数据和索引数 据。一个数据库必须至少冇一个缓冲池,并且可以有多个缓冲池,这要视工作负载的特征、数据 库中使用的数据库页面大小等因素而定。例如,页面大小为8kb的表空间只能使用页面大小 为8kb的缓冲池。查看主缓冲池的人小有多少,可以发出:select * from syscat.bufeerpools;bpnamebufferpooliddbpgnamenpa. 一 pagesize estorenumblockpagesblocksizengnamevarchar (128)integkvarchar (128)integkinteger char (1)intege
19、rintegervarchar (128)1bmdefaultbp1null2|4096 n00 nullbp32k4null232768 n00 nullibmdefault32k3null500032768 n00 nullbuffp_32k2ffimdefaultgroup1000032768 n0o ibmdefaultgroup|npage列代表页数量,pagesize为页大小。npage二-2,代农缓冲池大小是自动调整的,非固定。注:npage二一,表示缓冲池大小由db cfg的buffer_page大小控制,默认是1000页。如何创建白动调整内存大小的缓冲池:create buf
20、ferpool bp4k immediate size 100000 automatic pagesize 4k2) 隐藏的缓冲池当数据库启动时,要分配4个页宽分别为4k、8k、16k和32k的小型缓冲池。这些缓冲池是“隐 藏”的,因为在系统编目中看不到它们(通过select * from syscat. bufferpools显示不出)。3) ut1l_heap_sz指示可由backup、restore. load实用程序同时使用的内存量。4) pckcachesz用于高速缓存数据库上的静态和动态sql以及xquery语句的部分。5) dbheap, 包含表、索引、表空间和缓冲池的控制块信息
21、,还包括日志缓冲区的空间(logbufsz)和实 用程序使用的临时内存。因此,堆大小将取决于许多变量。6) logbufsz在将口志记录写入磁盘z前,此参数允许您指定用作这些记录的缓冲区的数据库堆大小(rh dbheap参数定义)。当发生下列一种悄况时会将n志记录写入磁盘: 一个事务落实或一组事务落实,由mincommit配置参数定义 口志缓冲区已满 发牛-了某些其他内部数据库管理器事件此参数也必须小于或等t dbhcap参数。缓冲h志记录将使日志记录文件i/o更有效,因为 将ri志记录写入磁盘的频率越低,每次可写入的口志记录就越多。可以使用数据库系统监视器來确定将多少口志缓冲区空间用于特定事
22、务(或工作单元)。7) catalogcache.sz此参数指定目录鬲速缓存可以使用的数据库堆中的最大空间(以页计)。高速缓存各个数据库分区屮的冃录信息允许数据库管理器不需要访问系统冃录(或分区数 据库环境屮的目录节点)即町获取先前检测的信息,从而降低其内部开销。使用目录高速 缓存可以帮助提高下列各项的整体性能: 绑定程序包以及编译sql和xquery语句 涉及检查数据焊级别特权、例程特权、全局变量特权和角色权限的操作 连接至分区数据库环境中的非ii录节点的应用程序8) locklist此参数指示分配给锁定列表的内存量。每个数据库都冇一个锁定列表,锁定列表包含由同 时连接至数据库的所有应用程序
23、挂起的锁定。在所有平台上,每个锁定需要128或256字节的锁定列表,这取决于是否对该対象挂起了 其他锁定:对于未挂起其他锁定的対彖,挂起一个锁定需要256个字节。对于存在挂起的锁定的对彖,记录一个锁定需要128个字节。一旦锁定列表已满,性能就可能会降低,因为锁定升级将牛成更多的表锁定和更少的行锁 定,从而降低数据库中共享对彖的并行性。9) 排序堆的阈值(sheapthres, sheapthres.shr)如果没有索引满足所収的行的要求顺序,或者优化器断楚排序的代价低丁索引扌目描,那么就需 耍进行排序。db2中有两种排序,一种是私有排序,一种是共享排序。私有排序发生在代理的私 有代理内存中,而
24、共享排序发生在数据库的数据库共享内存中。对于私有排序,数据库管理器配置参数sheapthres指定了私有排序在任何时刻可以消耗的内 存总量在实例范围内的软限制。如果一个实例总共消耗的私冇排序内存达到了这一限制,那么 为额外传入的私有排序请求所分配的内存将大大减少。如果启用了内部分区并行性(intra-partit ion paral lelism)或者集中器(concentrator), 那么当db2断定共享排序比私有拙序更有效时,db2就会选择执行共享排序。如果执行共享排 序,那么就会在数据库共享内存中分配用于这种排序的排序堆。用于共享排序的最人内存量是由shcapthres shr数据库参
25、数指能的。这是对共享排丿芋在任何时刻可以消耗的内存总量在数据 库范围内的硕限制。当达到这个限制时,请求排序的应用程序将收到错误sql0955 (m2)。z 后,在共享内存总消耗量冋落到低丁由sheapthres.shr指定的限制z前,任何共享排序内存的 请求都得不到允许。10) 查看内存大小:查看数据库详细配逍信息:db2inst3perf233 $ db2 connect to tsojx user iso using tsodb2inst3perf233 $ db2 getdb cfg for tsojx show detailself tuning memory size of data
26、base shared memory (4kb) database memory thresholdmax storage for lock list (4kb) percent of lock lists per application package cache size (4kb) sort neap thres for shared sorts sort list heap (4kb)(self.tuning-mem) = on (active)(database_m emo ry)= automatic(694 380) (dbmemthresh) = 10(locklist) =
27、automatic(111658) (maxlocks5 automaticc98) (pckcacheszj automaticc32715)(4kb) (sheapthres-shrj = automaticq8034)(sortheap) = automatic(1606)database heap (4kb) catalog cache size (4kb)log buffer size (4kb) utilities heap size (4kb) buffer pool size (pages)sql statement heap (4kb) default application
28、 heap (4kb) application memory size (4kb) statistics heap size (4kb)(dbheap) (catalogcache_sz) (logbufszj (util_h£ap_szj (buffpage) (stmtheap) (applheapsz) (appljviemory) (stat.heap.sz)automatic(2827)26099 124911 1000automatic(4096)automatic(256)automatic(4800)automatic(4384)onautomatic(694380)
29、10automatic(111658)automaticc98)automatic(32715)automatic(8034)automatic(1606)automatic(2827)260991249111000automatic(4096)automatic(256)automatic(40016)automatic(4384)使川db2mtrk工具显示当前使用的内存量:db2mtrk -i -d 一vdb2inst3perf233 $ ab2mtrk -a -vtracking memory on: 2015/02/13 at 11:12:12memory for database:
30、tsojxbackup/restore/uti1 heap is of size 65536 bytes package cache is of size 138870784 bytes other memory is of size 196608 bytes catalog cacne heap is of size 1376256 bytes -""(4) is of size 二二 一 (2) (1) is (system 32k buffer pool) (system 16k buffer pool) (system 8k buffer pool) is (sys
31、tem 4k buffer pool) is is of size 2293760 bytesbuffer poolbuffer buffer buffer buffer buffer buffer buffershared.lock manager heap is of size 479789056 bytes of size 38207488 bytes (2985) is of size 131072 bytes (2977) is *(1686) is (949) 1 (863) i (857) i (855) i (846) i (824) i (794) i (754) i (41
32、4) i (393) i (66) is (65) is (64) is (63) is (61) is (60) is (59) is (57) is (56) is (54) is (53) is (52) ispool pool pool pool pool pool pool sortheap heap heap heap heap heap heap heap heaps of size s of si ze s of size of size33357824 bytes164954112 329580544 525860864ytesoytesbytesbytesis of siz
33、e 851968 is of size 589824 of size 458752 of size 393216e e s s t t e e 翠ytbbdatabase heap is heapheap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heap heapapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplication
34、applicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplication heap _.applications shared heap total: 1728053248 bytesof size 131072 bytes off of of of of of of of of of of of
35、 of of of of of of of of of of issize 131072 bytes si ze “ "“ c" 1 亠一 size size si ze size size si ze si ze size size size size size size size size size size size size size size of si ze 8716288 bytes131072 131072 131072 131072 131072 131072 131072 131072 131072 131072 65536 65536 65536 65
36、536 65536 65536 65536 65536 65536 65536 65536 65536bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes3.应用程序组共享内存这种共享内存集仅适用于以下环境。(对于其他环境,这种内存集不存在。)多分区(multi-partitioned)数据库。启用了内部并行(intra-parallel)处理的未分区(non-partitioned)数
37、据库。支持连接集屮器的数据库。注意:当【imx_connections的值大于iimx_coordiigents的值时,连接集中器便被启用°这两个 参数可以在数据库管理器配置中找到。(使用get dbm cfg显示数据库管理器配置。)max number of coordinating agerrts max number of dierrt connections(max.coordagents) = automatic(200)(maxconnections) = automatic(max_coordagents)4.代理私有内存每个db2代理进程都需要获得内存,以执行其任务。
38、代理进程将代表应用程序使用内存來优 化、构建和执行访问计划,执行排序,记录游标信息(例如位置和状态),收集统计信息,等等。 为响应并行环境中的一个连接请求或一个新的sql请求,要为一个db2代理分配代理私有内存。代理的数量受卜而两者中的较低者限制:所冇活动数据库的数据库配登参数maxappls的总和。数据库管理器配置参数maxagents的值,这指定了允许的最大代理数。priority of agentsagerrt pool sizeinitial number of agents in pool(agentpri) = system(num.poolagents) = automatic(
39、100)(num.initagents) = 0(maxappls) = automatic(225) (avg_appls) = automatic(1)max number of active applications average number of active applications代埋私育内存集由以下内存池组成。application heap ( app1heapsz)sort heap ( sortheap)statement heap ( stmtheap)statistics heap ( stat_heap_sz)query heap ( query_heap_sz)
40、java interpreter heap ( java_heap_sz)agent stack size ( agent_stack sz)(仅适用于 windows)私有内存何时释放呢?答案取决于dbm cfg参数num poolagents的值。该参数的值指定 任何时候可以保留的闲置代理的最大数目。如果该值为0,那么就不允许右闲置代理。只要一个 代理完成了它的工作,这个代理就耍被销毁,它的内存也耍返冋给操作系统。如果该参数被设为 一个非零值,那么一个代理在完成其工作后不会被销毁。相反,它将被返回到闲置代理池,直到 闲置代理的数目到达nuni_poolagents指定的最大值。当传入一个新
41、的请求时,就要调用这些闲 置代理來服务该新请求。这样就减少了创建和销毁代理的开销。三、自动调整内存从db2®v9开始,内存调整功能通过向动设置一些内存配置参数的值來简化内存配置任务。启用此 功能之后,内存调整器将在下列内存使用者之间动态分配可用的内存资源:缓冲池、锁定内存、程序 包高速缓存和排序内存。调整器在database.memory配置参数所定义的内存限制范西内工作。此参数的值也可以白动调整。 启用口调整功能(将database_memory的值设置为automatic)之后,调整器将确定数据库的 整体内存盂求并根据当前数据库盂求来增加或减少分配给数据库共享内心的内存量。例如,
42、如果当前 数据库需求很高,并且系统上有足够的町用内存,那么将为数据库共亨内存分配较多的内存。如果数 据库内存需求下降,或者系统上的可用内存量变得过低,那么将释放一些数据库共享内存。默认配置如下:self tuning memorycself_tuning_mem = on|size of database shared memory (4kb)_694380)可以对下列内存使用者启用h调整(把相应的参数设置为automatic): 缓冲池(由 alter bufferpool 和 create bufferpool 语句指能 automatic 属性)。 程序包髙速缓存(山pckcachesz
43、配置参数控制)。 锁定内存(山locklist和maxlocks配置参数控制)。 排序内存(由sheapthres_shr和sortheap配置参数控制)。 数据库共享内存(由database_memory配置参数控制)。self rum ng memory (self_tuning_mem) size of database shared memory (4kb) (database-memory) database memory threshold (db_mem_thresh) max storage for lock list (4kb) clocklisti percent of l
44、ock lists per application qmaxlocks) package cache size (4kb) (pckcachesz) sort neap thres for shared sorts (4kb) (sheapthres_shr) sort list heap (4kb) (sortheap)=on (active)=automatic(694 380) =10automatic automatic(111658)(98)automatic(32715)=automatic(8034) =automatic(1606)onautomatic(694 380)10a
45、utomatic automatic(111658) (98)automatic(32715)automatic(8034)automatic(1606)database heap (4kb) catalog cache size (4kb)log buffer size (4kb) utilities heap size (4kb) buffer pool size (pages)sql statement heap (4kb) default application heap (4kb) application memory size (4kb) statistics heap size
46、(4kb)(dbheap (catalogcachesz) (logbufsz) (util.heap.sz) (buffpage) (stmtheap) (applheapsz5 (appljviemoryj (stat_heap_sz) automatic(2827) =260=99=124911=1000=automatic(4096) automaticc256) automaticq4800)=automatic(4384)automatic(2827)260991249111000automatic(4096)automatic(256)automatic(40016)automa
47、tic(4384)注:db mem tiiresii 参数 此数据库配置参数表示数据库管理器允许的已落实但当前未使川的数据库共享内存最人百分比, 达到此百分比后,数据库管理器将开始释放已落实的内存页以将它们返回给操作系统。可接受的 值是整数0 (立即释放任何未使用的数据库共亨内存)到100(永远不释放任何未使用的数据库 共享内存)。缺省值是10(仅当当前未使用的数据库共享内存超过10%时,才释放那些内存)。四、优化建议1.使用合适的缓冲池大型缓冲池具有下列优点: 它们使频繁被请求的数据页能够保留在缓冲池中,从而提高访问速度。较少的i/o操作町以 减少i/o争用情况,从而缩短响应时间并减少i/o
48、操作所需的处理器资源。 它们提供了在保持响应时间不变的前提下实现更高事务处理速率的机会。 它们能够防止频繁使用的磁盘存储设备(例如用丁存储日录表以及频繁引用的用户表和索引 的设备)发生i/o争用情况。山于包含临时表空间的磁盘存储设备上的i/o争用情况减少, 因此查询所需执行的排序操作也能受益。多个缓冲池的优点:如果系统中存在下列任何一种情况,那么应该只使用一个缓冲池: 缓冲池总空间量:小于10000个4kb页 找不到具备该应用程序知识来执行专门调试的人员 您正在测试系统中工作在所有其他情况下,请考虑使用多个缓冲池,原因如下: 可以将临时表空间指定到独立的缓冲池,以便提高需要临时存储器的査询(尤
49、其是执行大量 排序操作的査询)的性能。 如果数据必须山很多小型的更新事务应用程序反复并快速地访问,那么请考虑将包含该数据 的表空间指定到独立的缓冲池。如果此缓冲池的大小合适,那么它的页被找到的机会将更大, 这有利于缩短响应时间和降低事务成本。 可以将数据隔离到不同的缓冲池中,以利于特定的应用程序、数据和索引。例如,您可能想 将频繁更新的农和索引放在单独的缓冲池中,以便为那些频繁杳询但很少更新的表和索引分 开。 对于很少使用的应用程序(尤其是需要对一个很大的表非常随机地进行访问的应用程序)所 访问的数据,可使用较小的缓冲池。在此情况下,不需要使数据保存在缓冲池中的时间超出 单个査询的运行时间。垠
50、好为此类数据保留一个小缓冲池,以便腾出额外的内存供其他缓冲 池使用。将数据分到不同的缓冲池z后,可以根据统计信息和记帐跟踪来生成良好并且成木相对较低的性能诊 断数据。增加缓冲池人小一般会改进命中率,但您会达到一个最优状态,而无法继续改进。从理论上说, 如果能够分配大到足以存储整个数据库的缓冲池,则系统启动并运行后你可以得到100%的命屮 率。但在许多情况下这是不现实的。命屮率的高低实际上取决于数据的大小以及访问数据的方式。 如果数据庫很大并冃数据访问比较平均,则命中率将会很低。对于非常大的表来说,您儿乎无能 为力。在此情况下,应该将重点放在较小并ji.访问较为频繁的表以及索引上。如果可能的话,
51、将 它们指定给希望获取髙命中率的各个缓冲池。如果采川多缓冲池的方法,对于初学者來说使丿u 4个缓冲池比较合适: 一个中等大小的缓冲池,用于临时表空间。 一个大型的缓冲池,用于索引表空间。 一个大型的缓冲池,用于那些包含经常要访问的表的表空间。 一个小型的缓冲池,用丁那些包含访问不多的表、随机访问的表或顺序访问的表的表空 间。对于dms只包含lob数据的表空间,可以为其分配任何缓冲池,因为lob不占用缓冲池空间。2数据预取1)顺序预取 使用单一 i/o操作将多个连续的页读入缓冲池可以大大降低应用程序开销。当数据库管理器确定顺序i/o合适并且预取操作有助于提高性能吋,预取操作就会启动。对丁表扫 描
52、和表排序这类情况,数据库管理器将自动选择顺序预取。以下示例(可能要求执行表扫描)适合丁- 顺序预取:select name from employee顺序检测有时,并不能立即确定顺序预取能否提高性能。在此类情况下,数据库管理器可以监视i/o并在顺 序页读操作发生时激活预取。这种类型的顺序预取称为顺序检测,并且同时适用于索引页和数据页。 您可以使用seqdetect数据库配置参数來控制数据库管理器是否执行顺序检测。例如,如果启用顺序检测,那么顺序预取有可能使以下sql语句受益:select name from employeewhere empno between 100 and 3000在木示
53、例中,优化器可能已开始使用基于empno列的索引來扫描表。如果该表相对于此索引而言高 度集群,那么数据页读操作将几乎按顺序进行,并且预取有助于提高性能。同样,如果必须检查许多 索引页,并且数据库管理器检测到止在按顺序读取索引页,那么有可能进行索引页预取。表空间的prefetchsize选项的含义create tablespace或alter tablespace语句的prefetchsize子句允许您指定执行数据预取时将 从表空间中读取的预取页数。您指定的值(或考"automatic")将存储在syscat.tablespaces冃录 视图的prefetchsize列中。您
54、最好将prefetchsize值明确设置为衣空间容器数、每个容器下的物理磁盘数(如果使用了 raid 设备的话)与表空间的extentsize值(数据库管理器在使用另一个容器前写入容器的页数)的乘积。 例如,如果扩展数据块大小为16页,并且表空间包含两.个容器,那么可以将预取人小设置为32页。 如果每个容器有5个物理磁盘,那么可以将预取大小设置为160页。数据库管理器将监视缓冲池的使用情况,以确保预取不会从缓冲池中除去另个工作单元所需的贞。 为了避免引起问题,数据库管理器可将预取的页数限制为小于您对农空间指泄的数日。预取大小可能会显著影响性能,对于人型表扫描而言尤其如此。请使用数据库系统监视器和其他系统 监视工具來帮助您调整表空间的预取大小。您可以收集有关是否存在下列情况的信息:查询等待i/o (通过使用适用于操作系统的监视工具來检查这种情况)止在进行预取(通过查看数据丿牟系统监视器提供的pool_async_data_readsi缓冲池异步数据读取) 数据元索來检杏这种悄况)如果查询预取数据时发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度教育培训档口租赁合同
- T-ZJCX 0046-2024 帘子线直捻机
- 二零二五年度公车私用行为规范与责任追究协议
- 二零二五年度全新码头租赁协议及仓储服务合作协议
- 2025年度果园租赁与农业科技研发合同
- 二零二五年度广告代理合同解除与权益调整协议
- 2025年度高科技企业计件工资劳动合同
- 2025年度智能合同履约跟踪与风险控制管理办法
- 2025年度消防设施定期维护与消防通道清理合同
- 二零二五年度美发店员工劳动健康保险与意外伤害合同
- 2024年全国职业院校技能大赛中职(大数据应用与服务赛项)考试题库(含答案)
- 2024湖南省水利厅直属事业单位招聘拟聘用人员历年高频难、易错点500题模拟试题附带答案详解
- 《计算机网络技术》课程教案(完整版)
- 追觅在线测评题
- 调岗未到岗解除劳动合同通知书
- 产品标准化大纲
- 西师版小学数学四年级下册教案
- 国有企业“三定”工作方案-国有企业三定方案
- 清华大学2024年强基计划数学试题(解析)
- 大学生新时代劳动教育教程全套教学课件
- 高一英语必修一试卷(含答案)(适合测试)
评论
0/150
提交评论