亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle--水位線

2024-08-29 13:54:34
字體:
來源:轉載
供稿:網友
一、Oracle 高水位線詳解一、什么是水線(High Water Mark)?所有的oracle段(segments,在此,為了理解方便,建議把segment作為表的一個同義詞) 都有一個在段內容納數據的上限,我們把這個上限稱為"high water mark"或HWM。這個HWM是一個標記,用來說明已經有多少沒有使用的數據塊分配給這個segment。HWM通常增長的幅度為一次5個數據塊,原則上HWM只會增大,不會縮小,即使將表中的數據全部刪除,HWM還是為原值,由于這個特點,使HWM很象一個水庫的歷史最高水位,這也就是HWM的原始含義,當然不能說一個水庫沒水了,就說該水庫的歷史最高水位為0。但是如果我們在表上使用了truncate命令,則該表的HWM會被重新置為0。二、HWM數據庫的操作有如下影響:a) 全表掃描通常要讀出直到HWM標記的所有的屬于該表數據庫塊,即使該表中沒有任何數據。b) 即使HWM以下有空閑的數據庫塊,鍵入在插入數據時使用了append關鍵字,則在插入時使用HWM以上的數據塊,此時HWM會自動增大。三、如何知道一個表的HWM?a) 首先對表進行分析:    ANALYZE TABLE <tablename> ESTIMATE/COMPUTE STATISTICS;b) SELECT blocks, empty_blocks, num_rows  FROM user_tables  WHERE table_name = <tablename>;說明:BLOCKS 列代表該表中曾經使用過得數據庫塊的數目,即水線。EMPTY_BLOCKS 代表分配給該表,但是在水線以上的數據庫塊,即從來沒有使用的數據塊。讓我們以一個有28672行的BIG_EMP1表為例進行說明:1) SQL> SELECT segment_name, segment_type, blocks  FROM dba_segments WHERE segment_name='BIG_EMP1';SEGMENT_NAME       SEGMENT_TYPE    BLOCKS     -----------------  --------------  --------- BIG_EMP1           TABLE           1024       1 row selected.                        2) SQL> ANALYZE TABLE big_emp1 ESTIMATE STATISTICS;Statement PRocessed.3) SQL> SELECT table_name,num_rows,blocks,empty_blocks FROM user_tables WHERE table_name='BIG_EMP1';TABLE_NAME  NUM_ROWS  BLOCKS     EMPTY_BLOCKS----------  --------  -------    -------------BIG_EMP1    28672     700        3231 row selected.注意:BLOCKS + EMPTY_BLOCKS (700+323=1023)比DBA_SEGMENTS.BLOCKS少1個數據庫塊,這是因為有一個數據庫塊被保留用作segment header。DBA_SEGMENTS.BLOCKS 表示分配給這個表的所有的數據庫塊的數目。USER_TABLES.BLOCKS表示已經使用過的數據庫塊的數目。4) SQL> SELECT COUNT (DISTINCTDBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)||DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) "Used"FROM big_emp1;Used----------7001 row selected.5) SQL> delete from big_emp1;28672 rows processed.6) SQL> commit;Statement processed.7) SQL> ANALYZE TABLE big_emp1 ESTIMATE STATISTICS;Statement processed.  8) SQL> SELECT table_name,num_rows,blocks,empty_blocks FROM user_tables WHERE table_name='BIG_EMP1';TABLE_NAME  NUM_ROWS   BLOCKS   EMPTY_BLOCKS---------   --------   -------  ----------BIG_EMP1    0          700      3231 row selected.9) SQL> SELECT COUNT (DISTINCTDBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)||DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) "Used"FROM big_emp1;Used----------0 ----這表名沒有任何數據庫塊容納數據,即表中無數據1 row selected.10) SQL> TRUNCATE TABLE big_emp1;Statement processed.11) SQL> ANALYZE TABLE big_emp1 ESTIMATE STATISTICS;Statement processed.12) SQL> SELECT table_name,num_rows,blocks,empty_blocks FROM user_tables WHERE table_name='BIG_EMP1';TABLE_NAME  NUM_ROWS  BLOCKS    EMPTY_BLOCKS----------  --------  --------  ------------BIG_EMP1    0         0         5111 row selected.13) SQL> SELECT segment_name,segment_type,blocks FROM dba_segments WHERE segment_name='BIG_EMP1';SEGMENT_NAME  SEGMENT_TYPE  BLOCKS------------  ------------- ------BIG_EMP1      TABLE         5121 row selected.注意:TRUNCATE命令回收了由delete命令產生的空閑空間,注意該表分配的空間由原先的1024塊降為512塊。為了保留由delete命令產生的空閑空間,可以使用TRUNCATE TABLE big_emp1 REUSE STORAGE.用此命令后,該表還會是原先的1024塊。四、Oracle表段中的高水位線HWM在Oracle數據的存儲中,可以把存儲空間想象為一個水庫,數據想象為水庫中的水。水庫中的水的位置有一條線叫做水位線,在Oracle中,這條線被稱為高水位線(High-warter mark, HWM)。在數據庫表剛建立的時候,由于沒有任何數據,所以這個時候水位線是空的,也就是說HWM為最低值。當插入了數據以后,高水位線就會上漲,但是這里也有一個特性,就是如果你采用delete語句刪除數據的話,數據雖然被刪除了,但是高水位線卻沒有降低,還是你剛才刪除數據以前那么高的水位。也就是說,這條高水位線在日常的增刪操作中只會上漲,不會下跌。下面我們來談一下Oracle中Select語句的特性。Select語句會對表中的數據進行一次掃描,但是究竟掃描多少數據存儲塊呢,這個并不是說數據庫中有多少數據,Oracle就掃描這么大的數據塊,而是Oracle會掃描高水位線以下的數據塊?,F在來想象一下,如果剛才是一張剛剛建立的空表,你進行了一次Select操作,那么由于高水位線HWM在最低的0位置上,所以沒有數據塊需要被掃描,掃描時間會極短。而如果這個時候你首先插入了一千萬條數據,然后再用delete語句刪除這一千萬條數據。由于插入了一千萬條數據,所以這個時候的高水位線就在一千萬條數據這里。后來刪除這一千萬條數據的時候,由于delete語句不影響高水位線,所以高水位線依然在一千萬條數據這里。這個時候再一次用select語句進行掃描,雖然這個時候表中沒有數據,但是由于掃描是按照高水位線來的,所以需要把一千萬條數據的存儲空間都要掃描一次,也就是說這次掃描所需要的時間和掃描一千萬條數據所需要的時間是一樣多的。所以有時候有人總是經常說,怎么我的表中沒有幾條數據,但是還是這么慢呢,這個時候其實奧秘就是這里的高水位線了。那有沒有辦法讓高水位線下降呢,其實有一種比較簡單的方法,那就是采用TRUNCATE語句進行刪除數據。采用TRUNCATE語句刪除一個表的數據的時候,類似于重新建立了表,不僅把數據都刪除了,還把HWM給清空恢復為0。所以如果需要把表清空,在有可能利用TRUNCATE語句來刪除數據的時候就利用TRUNCATE語句來刪除表,特別是那種數據量有可能很大的臨時存儲表。在手動段空間管理(Manual Segment Space Management)中,段中只有一個HWM,但是在Oracle9iRelease1才添加的自動段空間管理(Automatic Segment Space Management)中,又有了一個低HWM的概念出來。為什么有了HWM還又有一個低HWM呢,這個是因為自動段空間管理的特性造成的。在手段段空間管理中,當數據插入以后,如果是插入到新的數據塊中,數據塊就會被自動格式化等待數據訪問。而在自動段空間管理中,數據插入到新的數據塊以后,數據塊并沒有被格式化,而是在第一次在第一次訪問這個數據塊的時候才格式化這個塊。所以我們又需要一條水位線,用來標示已經被格式化的塊。這條水位線就叫做低HWM。一般來說,低HWM肯定是低于等于HWM的。五、修正ORACLE表的高水位線在ORACLE中,執行對表的刪除操作不會降低該表的高水位線。而全表掃描將始終讀取一個段(extent)中所有低于高水位線標記的塊。如果在執行刪除操作后不降低高水位線標記,則將導致查詢語句的性能低下。下面的方法都可以降低高水位線標記。1.執行表重建指令 alter table table_name move;(在線轉移表空間ALTER TABLE 。。。 MOVE TABLESPACE 。。。ALTER TABLE 。。。 MOVE 后面不跟參數也行,不跟參數表還是在原來的表空間,move后記住重建索引。如果以后還要繼續向這個表增加數據,沒有必要move,只是釋放出來的空間,只能這個表用,其他的表或者segment無法使用該空間)2.執行alter table table_name shrink space; 注意,此命令為Oracle 10g新增功能,再執行該指令之前必須允許行移動alter table table_name enable row movement;3.復制要保留的數據到臨時表t,drop原表,然后rename臨時表t為原表4.emp/imp5.alter   table  table_name  deallocate   unused  6.盡量truncate吧
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费人成在线视频观看| 日韩大陆欧美高清视频区| 欧美日韩美女在线| 91在线观看免费| 国产一区二区丝袜| 欧美丰满少妇xxxxx做受| 国产成人精品免高潮在线观看| 国产精品一区二区三区毛片淫片| 精品久久久久久国产91| 96精品视频在线| 欧美精品中文字幕一区| 久久精品国产电影| 欧美有码在线观看视频| 51ⅴ精品国产91久久久久久| 欧美猛交免费看| 精品亚洲va在线va天堂资源站| 亚洲一区二区在线| 日韩不卡在线观看| 久久久中精品2020中文| 日本精品一区二区三区在线| 播播国产欧美激情| 亚洲美女av黄| 国产精品h片在线播放| 日韩资源在线观看| 亚洲电影免费在线观看| 久久中文久久字幕| 91精品视频专区| 亚洲国产欧美一区二区丝袜黑人| 国产精品高清在线观看| 91久久久久久| 日韩欧美国产免费播放| 成人日韩在线电影| www.日韩av.com| 国产香蕉精品视频一区二区三区| 色yeye香蕉凹凸一区二区av| 日韩高清av在线| 欧美激情亚洲视频| 久久99热精品| 欧美成人中文字幕| 久久网福利资源网站| 91精品在线影院| 欧美电影在线免费观看网站| 日韩在线免费视频观看| 精品国产欧美成人夜夜嗨| 中文字幕亚洲欧美日韩在线不卡| 国产成人精品免高潮费视频| 亚洲成av人乱码色午夜| 日韩精品小视频| 国产999在线| 亚洲视频在线观看视频| 欧美精品久久久久久久久| 久热爱精品视频线路一| 国产精品九九久久久久久久| 亚洲高清久久网| 久久久久久久网站| 亚洲二区在线播放视频| 亚洲精品v天堂中文字幕| 成人女保姆的销魂服务| 日韩国产激情在线| 欧美最顶级的aⅴ艳星| 日韩精品高清在线观看| 国产伊人精品在线| 91av福利视频| 一区二区在线视频| 欧美激情亚洲另类| 亚洲精品日韩在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲天堂成人在线| 日韩精品一二三四区| 国产成人免费av| 亚洲最新av在线网站| 国产亚洲精品成人av久久ww| 欧美激情中文网| 久久精品中文字幕免费mv| 日本免费一区二区三区视频观看| 亚洲无亚洲人成网站77777| 国产精品免费福利| 国产欧美日韩丝袜精品一区| 欧美精品久久一区二区| 国产拍精品一二三| 91麻豆国产语对白在线观看| 久久偷看各类女兵18女厕嘘嘘| 美日韩精品免费观看视频| 国产视频久久久久久久| 国产视频精品免费播放| 亚洲午夜国产成人av电影男同| 国产拍精品一二三| 精品国产网站地址| 久久久中文字幕| 欧美怡春院一区二区三区| 日韩精品中文字幕在线| 亚洲成人av在线播放| 国产精品久久久久91| 欧美高跟鞋交xxxxhd| 色婷婷综合成人| 欧美亚洲日本网站| 欧美日韩国产va另类| 欧美精品激情blacked18| 亚洲国产成人久久| 日本欧美在线视频| 色综合久久88| 中文字幕日韩精品在线| 国产精品久久中文| 亚洲视频电影图片偷拍一区| 91干在线观看| 17婷婷久久www| 欧美激情免费在线| 国产成人拍精品视频午夜网站| 麻豆乱码国产一区二区三区| 欧美午夜激情小视频| 国产成人+综合亚洲+天堂| 国产精品一二三在线| 成人美女免费网站视频| 日本高清视频精品| 国产亚洲精品综合一区91| 国产精品丝袜久久久久久高清| 一区二区三区四区在线观看视频| 91成品人片a无限观看| 操人视频在线观看欧美| 国产精品视频精品视频| 欧美大学生性色视频| 日韩精品在线视频| 日韩av免费观影| 综合激情国产一区| 中文字幕精品—区二区| 亚洲性av在线| 亚洲第一福利视频| 少妇久久久久久| 国产一区红桃视频| 91免费国产网站| 久久伊人免费视频| 激情懂色av一区av二区av| 久热在线中文字幕色999舞| 亚洲激情久久久| 久久伊人精品天天| 国产一区二区免费| 91九色国产社区在线观看| 欧美成人四级hd版| 亚洲最大的网站| xx视频.9999.com| 欧美激情视频网| 亚洲人线精品午夜| 亚洲欧美日韩天堂| 欧美在线视频免费播放| 亚洲免费一在线| 国产精品美乳在线观看| 国产精品久久久av| 日本最新高清不卡中文字幕| 日韩欧美在线字幕| 国产精品亚发布| 国产日韩欧美夫妻视频在线观看| 91久久精品久久国产性色也91| 日本一区二区三区在线播放| 中文字幕免费国产精品| 久久精品美女视频网站| 欧美激情在线观看视频| 91av成人在线| 国产精品久久久久久久久久东京| 国产精品第一第二| 国产精品成人观看视频国产奇米| 久久精品国产欧美亚洲人人爽| 欧美肥臀大乳一区二区免费视频| 欧美日韩第一页| 欧美区在线播放|