我计划将5 TB数据存储在一个表中。以下是我为创建表而生成的默认脚本:
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
)
请告诉我是否需要修改任何参数?
答案 0 :(得分:5)
如果不了解整个系统,很难提出好的建议。以下想法是基于您的脚本和您之前的问题的猜测How do I design a table which will store very large data?但不要相信您阅读的所有内容。你需要做很多测试。您可以轻松地花费很多天来优化这样的表格。
PCTFREE 0:如果你有5 TB而没有索引我 假设你不会做任何事情 更新。如果这是真的,你可以 将PCTFREE更改为0并节省10% 你的空间。
NOLOGGING:如果您不需要数据 可恢复的,如果您的数据库是 在存档日志模式中,您可以 想要添加NOLOGGING。 NOLOGGING 使用APPEND插入不会 生成重做。 (这可能是 如果你的表空间是不必要的 已经设置为NOLOGGING。)
PARALLEL:你肯定想要使用 与此表并行。以来 这张桌子很不寻常 你的系统,它可能更好 在声明中定义并行性 或会话级别。但如果你不愿意 控制所有的 语句针对此表运行 你可能想要考虑定义 这里的程度,以确保 语句不能串行运行。
删除未知选项:我认为你应该删除所有的 您没有具体的选项 设置,或不明白。如果你 使用像TOAD或 DBMS_METADATA生成脚本 他们将始终列出每个选项, 但通常你应该离开大部分 这东西让Oracle使用 无论喜欢什么。
压缩/分区:就像Gary提到的那样,分区 可能非常有用。但在你的 您提到的上一个问题 存储容量高达200TB,仅为5TB 每天。你在用穷人吗? 分区;重新命名和 每天重新制作桌子?如果 这只是一天的数据 然后压缩应该是非常的 有助于测量时间。
块大小:我不确定是什么设置 “mytablespace”是,但自从你 我没有提到任何关于它的事情 猜猜你正在使用标准 块大小。 可能值得 使用大块大小 桌子让你可以变得更好 压缩(因为压缩是 按块完成,a中的数据越多 阻止更多Oracle可以压缩)。 我不愿意这样说, 因为99%的时候都是人 改变它不做的块大小 他们认为应该如何。但随着 可能会有如此大量的数据 值得考虑。