欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Oracle中高水位線(xiàn)(HWM)
什么是高水位線(xiàn)(High Water Mark
----------------------------
oracle的邏輯存儲結構:表空間——>段——>區——>塊
  塊:是粒度最小的存儲單位,現在標準的塊大小是8K,ORACLE每一次I/O操作也是按塊來(lái)操作的,也就是說(shuō)當ORACLE從數據文件讀數據時(shí),是讀取多少個(gè)塊,而不是多少行.
  區:由一系列相鄰的塊而組成,這也是ORACLE空間分配的基本單位,舉個(gè)例子來(lái)說(shuō),當我們創(chuàng )建一個(gè)表A時(shí),首先ORACLE會(huì )分配一區的空間給這個(gè)表,隨著(zhù)不斷的INSERT數據到A,原來(lái)的這個(gè)區容不下插入的數據時(shí),ORACLE是以區為單位進(jìn)行擴展的,也就是說(shuō)再分配多少個(gè)區給A,而不是多少個(gè)塊.
  段:是由一系列的區所組成,一般來(lái)說(shuō),當創(chuàng )建一個(gè)對象時(shí)(表,索引),就會(huì )分配一個(gè)段給這個(gè)對象.所以從某種意義上來(lái)說(shuō),段就是某種特定的數據.如CREATETABLE PM_USER,這個(gè)段就是數據段,而CREATE INDEX ONPM_USER(NAME),ORACLE同樣會(huì )分配一個(gè)段給這個(gè)索引,但這是一個(gè)索引段了.查詢(xún)段的信息可以通過(guò)數據字典: SELECT* FROM USER_SEGMENTS來(lái)獲得,
  表空間:包含段,區及塊.表空間的數據物理上儲存在其所在的數據文件中.一個(gè)數據庫至少要有一個(gè)表空間.
  所有的oracle段都有一個(gè)在段內容納數據的上限,我們把這個(gè)上限稱(chēng)為"high watermark"或HWM。這個(gè)HWM是一個(gè)標記,用來(lái)說(shuō)明已經(jīng)有多少空閑數據塊分配給這個(gè)segment。
  HWM通常增長(cháng)的幅度為一次5個(gè)數據塊,原則上HWM只會(huì )增大,不會(huì )縮小,即使將表中的數據全部刪除,HWM還是為原值,由于這個(gè)特點(diǎn),HWM很象一個(gè)水庫的歷史最高水位,這也就是HWM的原始含義,當然不能說(shuō)一個(gè)水庫沒(méi)水了,就說(shuō)該水庫的歷史最高水位為0。但是如果我們在表上使用了truncate命令,則該表的HWM會(huì )被重新置為0。
HWM數據庫的操作有如下影響:
a) 全表掃描通常要讀出直到HWM標記的所有的屬于該表數據庫塊,即使該表中沒(méi)有任何數據。
b)即使HWM以下有空閑的數據庫塊,鍵入在插入數據時(shí)使用了append關(guān)鍵字,則在插入時(shí)使用HWM以上的數據塊,此時(shí)HWM會(huì )自動(dòng)增大。

如何知道一個(gè)表的HWM?
a) 首先對表進(jìn)行分析:
ANALYZE TABLE <tablename>ESTIMATE/COMPUTE STATISTICS;
b) SELECT blocks, empty_blocks, num_rows
FROM user_tables
WHERE table_name = <tablename>;

BLOCKS 列代表該表中曾經(jīng)使用過(guò)得數據庫塊的數目,即高水位線(xiàn)
EMPTY_BLOCKS 代表分配給該表,但是在水線(xiàn)以上的數據庫塊,即從來(lái)沒(méi)有使用的數據塊。

讓我們以一個(gè)有28672行的BIG_EMP1表為例進(jìn)行說(shuō)明:
1) SQL> SELECTsegment_name,segment_type,blocks
FROM dba_segments
WHERE segment_name='BIG_EMP1';
SEGMENT_NAME SEGMENT_TYPE BLOCKS EXTENTS
----------------------------- ----------------- -----------------
BIG_EMP1 TABLE 1024 2
1 row selected.

2) SQL> ANALYZE TABLE big_emp1 ESTIMATESTATISTICS;
Statement processed.

3) SQL> SELECTtable_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 323
1 row selected.

注意:
BLOCKS + EMPTY_BLOCKS(700+323=1023)比DBA_SEGMENTS.BLOCKS少個(gè)數據庫塊,這是因為有一個(gè)數據庫塊被保留用作segmentheader。DBA_SEGMENTS.BLOCKS表示分配給這個(gè)表的所有的數據庫塊的數目。USER_TABLES.BLOCKS表示已經(jīng)使用過(guò)的數據庫塊的數目。

4) SQL> SELECT COUNT (DISTINCT
DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)||
DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) "Used"
FROM big_emp1;
Used
----------
700
1 row selected.

5) SQL> DELETE from big_emp1;
28672 rows processed.

6) SQL> commit;
Statement processed.

7) SQL> ANALYZE TABLE big_emp1 ESTIMATESTATISTICS;
Statement processed.

8) SQL> SELECTtable_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 323
1 row selected.

9) SQL> SELECT COUNT (DISTINCT
DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)||
DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) "Used"
FROM big_emp1;
Used
----------
0 -- 這表名沒(méi)有任何數據庫塊容納數據,即表中無(wú)數據
1 row selected.

10) SQL> TRUNCATE TABLE big_emp1;
Statement processed.

11) SQL> ANALYZE TABLE big_emp1 ESTIMATESTATISTICS;
Statement processed.

12) SQL> SELECTtable_name,num_rows,blocks,empty_blocks
2> FROM user_tables
3> WHERE table_name='BIG_EMP1';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ----------------------
BIG_EMP1 0 0 511
1 row selected.

13) SQL> SELECTsegment_name,segment_type,blocks
FROM dba_segments
WHERE segment_name='BIG_EMP1';
SEGMENT_NAME SEGMENT_TYPE BLOCKS EXTENTS
----------------------------- ----------------- -----------------
BIG_EMP1 TABLE 512 1
1 row selected.

注意:
TRUNCATE命令回收了由delete命令產(chǎn)生的空閑空間,注意該表分配的空間由原先的1024塊降為512塊。
為了保留由delete命令產(chǎn)生的空閑空間,可以使用
TRUNCATE TABLE big_emp1 REUSE STORAGE
用此命令后,該表還會(huì )是原先的1024塊。
補充:

在手動(dòng)段空間管理(Manual Segment SpaceManagement)中,段中只有一個(gè)HWM,但是在Oracle9iRelease1才添加的自動(dòng)段空間管理(Automatic Segment SpaceManagement)中,又有了一個(gè)低HWM的概念出來(lái)。為什么有了HWM還又有一個(gè)低HWM呢,這個(gè)是因為自動(dòng)段空間管理的特性造成的。在手段段空間管理中,當數據插入以后,如果是插入到新的數據塊中,數據塊就會(huì )被自動(dòng)格式化等待數據訪(fǎng)問(wèn)。而在自動(dòng)段空間管理中,數據插入到新的數據塊以后,數據塊并沒(méi)有被格式化,而是在第一次在第一次訪(fǎng)問(wèn)這個(gè)數據塊的時(shí)候才格式化這個(gè)塊。所以我們又需要一條水位線(xiàn),用來(lái)標示已經(jīng)被格式化的塊。這條水位線(xiàn)就叫做低HWM。一般來(lái)說(shuō),低HWM肯定是低于等于HWM的。 

   在ORACLE中,執行對表的刪除操作不會(huì )降低該表的高水位線(xiàn)。而全表掃描將始終讀取一個(gè)段(extent)中所有低于高水位線(xiàn)標記的塊。如果在執行刪除操作后不降低高水位線(xiàn)標記,則將導致查詢(xún)語(yǔ)句的性能低下。下面的方法都可以降低高水位線(xiàn)標記。

1.執行表重建指令 alter table table_name move;
(在線(xiàn)轉移表空間ALTER TABLE 。。。 MOVE TABLESPACE。。。
 ALTER TABLE 。。。 MOVE 后面不跟參數也行,
 
不跟參數表還是在原來(lái)的表空間,move后記住重建索引
 如果以后還要繼續向這個(gè)表增加數據,沒(méi)有必要move,
 只是釋放出來(lái)的空間,只能這個(gè)表用,其他的表或者segment無(wú)法使用該空間
 )

2.執行alter table table_name shrink space; 注意,此命令為Oracle10g新增功能,再執行該指令之前必須允許行移動(dòng) alter table table_name enable rowmovement;
3.復制要保留的數據到臨時(shí)表t,drop原表,然后rename臨時(shí)表t為原表
4.emp/imp
5.alter   table table_name  deallocate  unused  
6.盡量使用truncate。要注意truncate與delete的區別。



************************************************************
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Oracle高水位線(xiàn)
Oracle 高水位線(xiàn)(HWM) 及性能優(yōu)化 - wanglinchuan的專(zhuān)欄 - CS...
實(shí)例對比Oracle中truncate和delete的區別
shrink table
30個(gè)Oracle語(yǔ)句優(yōu)化規則詳解-性能調優(yōu)
轉載-----通過(guò)分析SQL語(yǔ)句的執行計劃優(yōu)化SQL(總結)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久