【问题标题】:Oracle table partitioning optionsOracle 表分区选项
【发布时间】:2021-07-08 16:32:11
【问题描述】:

我在 oracle db 中有一个交易表,每天有多达 2000 万条记录跨多个账户,账户增长到 ~100 个。

为了让我的查询尽可能快,我正在考虑:

  1. 超过 1 天间隔的日期字段范围分区
  2. 帐号字段上的哈希分区,因此每个帐户都有自己的每日交易集

我猜oracle会把这个表当作一个逻辑表,并为每个分区创建一个物理表?

关于 2 个不同的分区(范围和哈希)有什么建议吗?以及清除分区表中数据的任何特殊注意事项。

谢谢

【问题讨论】:

  • 发布您有代表性的查询以便能够提示。例如。如果您经常过滤 range - hash 分区将无济于事。
  • 为什么要对账号进行哈希分区?也许帐号范围也可以工作。
  • 通常分区不会加快您的查询速度,不要指望任何奇迹。如果分区设计与您的查询非常协调,则查询可能会更快。但是,当您必须清除旧数据时,DROP/TRUNCATE 分区比 DELETE 快得多。

标签: oracle oracle19c


【解决方案1】:

我猜oracle会把表当作逻辑表,并为每个分区创建一个物理表?

每个分区的物理段(或子分区的情况下的子分区)

关于 2 个不同的分区(范围和哈希)有什么建议吗?以及清除分区表中数据的任何特殊注意事项。

在不了解您的数据和数据处理的情况下很难提出任何建议,但您也可以考虑composite partitioning:按日期进行范围分区和按帐户进行哈希子分区。如果按日期分区,您可以按日期删除分区 (ALTER TABLE ... DROP PARTITION FOR(...))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多