资源描述:
《oracle高水位线说明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle高水位线说明Oracle高水位(HWM:HighWaterMark)说明个人分类:Oracle一.准备知识:ORACLE的逻辑存储管理.ORACLE在逻辑存储上分4个粒度:表空间,段,区和块.1.1块:是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行.每一个Block里可以包含多个row.1.2区:由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表Dave时,首先ORACLE会分配一区的空间给这个表,随着不断的I
2、NSERT数据到Dave,原来的这个区容不下插入的数据时,ORACLE是以区为单位进行扩展的,也就是说再分配多少个区给Dave,而不是多少个块.1.3段:是由一系列的区所组成,一般来说,当创建一个对象时(表,索引),就会分配一个段给这个对象.所以从某种意义上来说,段就是某种特定的数据.如CREATETABLEDave,这个段就是数据段,而CREATEINDEXONDave(NAME),ORACLE同样会分配一个段给这个索引,但这是一个索引段了.查询段的信息可以通过数据字典:SELECT*FROMUSER_SEGMENTS来获得.1.4表空间:包含段,区及块.表空间的数据物理上储
3、存在其所在的数据文件中.一个数据库至少要有一个表空间.表空间(tableSpace)段(segment)盘区(extent)块(block)关系http://blog.csdn.net/tianlesoftware/archive/2009/12/08/4962476.aspx当我们创建了一个表,即使我没有插入任何一行记录,ORACLE还是给它分配了8个块.当然这个跟建表语句的INITIAL参数及MINEXTENTS参数有关.如:STORAGE(INITIAL64KMINEXTENTS1MAXEXTENTSUNLIMITED);也就是说,在这个对象创建以后,ORACLE至少给它
4、分配一个区,初始大小是64K,一个标准块的大小是8K,刚好是8个BLOCK.OracleTable创建参数说明http://blog.csdn.net/tianlesoftware/archive/2009/12/07/4954417.aspx二.高水线(HighWaterMark)2.1官网说明如下http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/logical.htm#CNCPT89022Tomanagespace,OracleDatabasetracksthestateofblocksinthes
5、egment.Thehighwatermark(HWM)isthepointinasegmentbeyondwhichdatablocksareunformattedandhaveneverbeenused.MSSMusesfreeliststomanagesegmentspace.Attablecreation,noblocksinthesegmentareformatted.Whenasessionfirstinsertsrowsintothetable,thedatabasesearchesthefreelistforusableblocks.Ifthedatabasef
6、indsnousableblocks,thenitpreformatsagroupofblocks,placesthemonthefreelist,andbeginsinsertingdataintotheblocks.InMSSM,afulltablescanreadsallblocksbelowtheHWM.ASSMdoesnotusefreelistsandsomustmanagespacedifferently.Whenasessionfirstinsertsdataintoatable,thedatabaseformatsasinglebitmapblockinste
7、adofpreformattingagroupofblocksasinMSSM.Thebitmaptracksthestateofblocksinthesegment,takingtheplaceofthefreelist.Thedatabaseusesthebitmaptofindfreeblocksandthenformatseachblockbeforefillingitwithdata.ASSMspreadoutinsertsamongblockstoavoidconcurrency