[英]Oracle - how to see how many blocks have been used in a table
使用Oracle時,我的經驗非常有限,我想過要進行一個相當簡單的查詢。 我有一個包含一百萬行的表,我試圖證明壓縮數據使用較少的空間,但是我不確定如何執行此操作,基於下面的表創建,有人可以告訴我我需要寫些什么才能看到之前/之后使用的塊?
CREATE TABLE OrderTableCompressed(OrderID, StaffID, CustomerID, TotalOrderValue)
as (select level, ceil(dbms_random.value(0, 1000)),
ceil(dbms_random.value(0,10000)),
round(dbms_random.value(0,10000),2)
from dual
connect by level <= 1000000);
ALTER TABLE OrderTableCompressed ADD CONSTRAINT OrderID_PKC PRIMARY KEY (OrderID);
--QUERY HERE THAT SHOWS BLOCKS USED/TIME TAKEN
SELECT COUNT(ORDERID) FROM OrderTableCompressed;
ALTER TABLE OrderTableCompressed COMPRESS;
--QUERY HERE THAT SHOWS BLOCKS USED/TIME TAKEN WHEN COMPRESSED
SELECT COUNT(ORDERID) FROM OrderTableCompressed;
我知道壓縮是如何工作的……只是應用代碼來證明我的理論。 謝謝你的幫助
--QUERY HERE THAT SHOWS BLOCKS USED
SELECT blocks, bytes/1024/1024 as MB
FROM user_segments
where segment_name = 'ORDERTABLECOMPRESSED';
現在壓縮表:(請注意move
。如果沒有它,您只需更改表的屬性,隨后的直接路徑插入將創建壓縮塊)
ALTER TABLE OrderTableCompressed MOVE COMPRESS;
驗證塊:
--QUERY HERE THAT SHOWS BLOCKS USED TAKEN WHEN COMPRESSED
SELECT blocks, bytes/1024/1024 as MB
FROM user_segments
where segment_name = 'ORDERTABLECOMPRESSED';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.