Edu*_* Z. 9 oracle dynamic database-partitioning
我正在为我的应用程序构建数据库存储,该数据库存储包含一个包含大量数据量(数亿条记录)的表.我打算在日期字段上有一个索引,因为我将不时地在给定的时间段内对所有记录进行批量恢复(例如,检索第二天的所有记录,在午夜).
由于记录的数量巨大,性能是这个系统中的一个重要问题,我想知道是否有一种方法可以动态分区我的表,以便我可以更快地检索记录,创建和截断分区,因为它们不是需要更久.例如,在我处理完今天的记录之后,我将如何创建第二天的分区并将其与其余数据一起填充?
APC*_*APC 10
在11g中,我们可以定义INTERVAL分区,当Oracle获取其密钥不适合任何现有范围的新记录时,Oracle将自动创建新分区.这是一个非常酷的功能. 了解更多.
需要记住的一件事是,在Enterprise Edition许可证之上,分区是一项额外费用.因此使用起来并不便宜.
您可以通过使用动态 SQL来自动执行创建或截断分区的过程。您可以使用EXECUTE IMMEDIATE或来编写过程,DBMS_SQL并且可以使用DBMS_JOB或 来安排它们DBMS_SCHEDULER(DBMS_SCHEDULER是 10g 功能,比 更通用DBMS_JOB)。
您可能希望首先手动构建分区语句,然后当您对 DDL 有信心时自动执行该过程。您可以在ALTER TABLE 语句的文档中找到所有语法。