【问题标题】:to index or not in Oracle Exadata是否在 Oracle Exadata 中建立索引
【发布时间】:2018-08-24 02:22:27
【问题描述】:

我是 Oracle Exadata 的新手。我的问题是,在 Exadata 中索引还是不索引

发现一些博客说不索引数据库索引,只存储临时索引,但没有来自 Oracle 的官方文档说不在 Exadata 中索引。

如果我在 Exadata 中建立索引会出现什么问题? (因为它是在内存概念中实现的),它会提高还是降低性能?如果已经创建索引,是否更好地删除?

我们在 Oracle Exadata 中拥有超过 1500 万的海量数据,并且还在不断增长,其中包含 Varchars、CLOBS 和其他常见数据类型。除了主键之外,没有创建任何索引。为什么查询需要 10 到 12 分钟(从 1500 万条记录,简单的选择查询很少 where 条件)执行?甲骨文称 Exadata 是地球上最快的数据库。

【问题讨论】:

    标签: oracle exadata


    【解决方案1】:

    索引的决定与平台无关。它始终是相同的过程,即:

    拥有索引的好处是否超过拥有索引的成本

    费用

    • 必须维护
    • 空间开销
    • 可能会增加高插入/更新/删除频率环境中的争用

    好处

    • 更快的响应时间

    您在 Exadata 中可能有 less 索引的原因是,如果 其他 机制(存储索引、压缩、闪存等)可以为您提供满足您的响应时间业务需求,那么您可以避免这些索引的缺点。

    但决策过程保持不变 - 成本与收益。

    评估现有指数的常用技术是使其不可见,并查看是否存在不利(或有益)影响。这样,如果您必须恢复并保留索引,这样做是没有成本的。

    【讨论】:

    • 您提到了索引更快响应的好处,这在 Exadata 中仍然有效吗?一个博客说不要索引并降级:oaktable.net/blog/exadata-index-or-not-index-question
    • 抱歉,您误解了我的意思。忘记 Exadata - 您只添加索引来解决问题,即实现 某事。同样,文章也没有说删除索引。它说出了我在说什么......即:衡量量化收益,然后做出决定。
    • 我创建了索引并运行了查询,在具有 2500 万条记录的 Exadata 数据库中运行时,它与索引的差异相同或非常小。这意味着索引在 exadata 中没有好处,仅在非 exadata db 中有用。
    【解决方案2】:

    除了康纳的回答,请注意索引并不总是访问数据的最佳方式。即使在非 Exadata 存储系统上也是如此。是否使用索引的过程和考虑与 Exadata 无关; Exadata 所做的是提供更多不使用索引的理由/功能。

    【讨论】:

      【解决方案3】:

      oaktable 文章(在前面的评论中显示)说明了为什么在 exadata 中最好总是没有索引。下面来自 Oracle 的说明解释了原因。在非 exadata 数据库哑存储返回块(通常 8k)而不是行中,因此对于大型表,FTS 几乎总是一件坏事(除非您需要大多数行)。 Exadata 具有智能存储,其中包含来自查询的信息,并尝试消除不会回答查询的字节。它试图只返回可能回答查询的字节(而不是块)。此操作将 I/O 降低回 DB 进行处理。这样,FTS 并不是那么糟糕,实际上可能是首选。作为一名 DBA,我有一个 12TB 的数据库,而且很多时候我必须坚持使用 NO_INDEX 提示来改进查询。这违背了正常的建模理论。从磁盘检索数据是数据库中最慢的过程。 Exadata 会在流程的早期(在存储级别)删除不需要的数据,并减少发送回数据库进行处理的数据量。很多时候,我在 80 亿行表上的 FTS 比使用索引时快得多……仅在 Exadata 中;)

      http://www.oracle.com/technetwork/testcontent/o31exadata-354069.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-07
        • 2010-09-21
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 2015-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多