【问题标题】:What is the best partitioning method for table where two significant columns are some IDs? The DB is Oracle 11g对于两个重要列是一些 ID 的表,最好的分区方法是什么?数据库是 Oracle 11g
【发布时间】:2023-03-17 12:25:01
【问题描述】:

目标是减少COLUMN_1从表查询中删除的时间。现在这可能需要 15-30 分钟。

目前表中的数据被级联规则删除。 COLUMN_1 是外键。 我想更改此方法以在删除父行时在 BEFORE 触发器中截断整个分区。

此外,COLUMN_2 从应用程序中查询数据。

这两列的关系如下:

COL_1    COL_2
 1       1
         2
         3
         4
 2      
         5
         6
         7
         8
         9
         10
 3      
         11
         12
         13
...

两者分别有索引。 表有数百万条记录。有很多插入和读取操作。

经过一些研究 (oracle doc) 我会使用范围-范围分区
我需要动态创建分区,所以范围间隔分区可能是合适的......

【问题讨论】:

  • 你可以为你的研究添加一些参考资料。
  • 分区的目的是什么?改善加载时间?提高查询时间?实现分层存储?还有什么?表是如何加载的?怎么查询的?
  • 我编辑了描述。感谢您对问题的兴趣。
  • 如果目标是提高删除速度,那么您需要在col_1 上进行分区,因为这是您要删除的粒度级别。

标签: database performance oracle11g partitioning database-performance


【解决方案1】:

有两种选择:

将分区 N_Partition 切换到新的空表并截断该表:

更改表 big_table 交换分区 N_partition WITH TABLE table_to_be_truncated 包括索引 未经验证 更新全球指数; 截断表 table_to_be_truncated
  • 或截断分区
ALTER TABLE big_table TRUNCATE PARTITION N_partition 更新索引;

这是一篇很好的文章,描述了您可以使用分区做什么:Maintaining Partitions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2011-09-01
    相关资源
    最近更新 更多