2011-03-24 105 views
1

我打算將5 TB數據存儲在表中。以下是我爲創建表格而創建的默認腳本:在oracle中爲一個非常大的表創建表語句

CREATE TABLE measurements 
(
measurementtime    DATE NOT NULL, 
height number, 
offset number 
) 
PCTFREE 10 
PCTUSED 
INITRANS 1 
MAXTRANS 255 
TABLESPACE mytablespace 
STORAGE (
    INITIAL  262144 
    NEXT 
    PCTINCREASE 
    MINEXTENTS 1 
    MAXEXTENTS 2147483645 
    FREELIST GROUPS 0 
    FREELISTS 0 
) 

您能否告訴我是否需要修改任何參數?

+2

在5TB,你可能想看看有一個主鍵或某些索引:-) – paxdiablo 2011-03-24 00:50:56

+2

你可能想要分區或壓縮。取決於Oracle版本以及您實際打算如何處理數據。 – 2011-03-24 01:29:22

回答

5

如果不知道整個系統,很難給出好的建議。下面的想法是基於你的腳本和你以前的問題的猜測How do I design a table which will store very large data?但是不要相信你讀的所有東西。你需要做很多測試。您可以輕鬆地花費很多天試圖優化這樣的表格。

  1. PCTFREE 0:如果你有5 TB,沒有索引我 假設你不會做任何 更新。如果是這樣,您可以將 更改爲0,並節省10%的 您的空間。

  2. NOLOGGING:如果你不需要你的數據是 可恢復的,如果你的數據庫在ARCHIVELOG模式 ,那麼你可能 要添加NOLOGGING。 NOLOGGING 與APPEND插入不會產生 重做。 (這可能是不必要的 如果你的表是 已經被設置爲NOLOGGING。)

  3. 並行:你一定會想用 並行與此表。由於 此表很可能與您的系統的 不同,因此 可能會更好地定義 或會話級別的並行性。但是,如果你不會 擁有控制權的所有 聲明反對此表 運行,你可能要考慮在這裏definining 程度,以確保 語句不連續運行。

  4. 刪除未知選項:我認爲你應該刪除所有 選項,你沒有專門設置 或者不明白。如果您 使用像蟾蜍或 DBMS_METADATA工具來生成腳本 他們總是會列出所有選項, 但通常你應該把大部分的 那東西出來,讓甲骨文使用 爲所欲爲。

  5. 壓縮/分區:像Gary提到的那樣,分區 可能非常有用。但在您的 上一個問題中,您提到 每天最多可存儲200TB並且只有5TB 。你是否在使用窮人的 分區;重新命名和 每天重新創建表?如果 這只是一天的數據價值 那麼壓縮應該是非常有用的測量時間 。

  6. 塊大小:我不知道什麼樣的 「mytablespace」的設置,但因爲你 沒有再提我 猜你正在使用標準 塊大小。它可能使用大的塊尺寸爲這個 表值得 這樣你就可以得到更好的 壓縮(壓縮既然是 每塊完成,在 塊的數據越多越甲骨文可以壓縮)。 我不願意建議這個, ,因爲99%的時間,人們 改變塊大小,它不會做 他們認爲應該。但有了 這麼大的數據量,它可能是值得考慮的 。

相關問題