簡體   English   中英

Oracle-如何查看表中使用了多少塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM