是否在Oracle Exadata中编制索引

时间:2018-02-02 00:46:24

标签: oracle exadata

我是Oracle Exadata的新手。我的问题是,指数或不指向Exadata中的索引

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

如果我在Exadata中编制索引有什么问题? (因为它是在内存概念中实现的),它会改善或降级性能吗?如果已经创建了索引,是否更好?

我们拥有1500万以上的巨大数据,并且在Oracle Exadata中增加了Varchars,CLOBS和其他常见数据类型。除主键外没有创建任何索引。为什么查询需要花费10到12分钟(来自1500万条记录,简单的选择查询,其中条件很少)才能执行?甲骨文表示,Exadata是全球最快的数据库。

3 个答案:

答案 0 :(得分:2)

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

指数超过成本好处是否具有索引。

费用

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

优势

  • 更快的响应时间

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

但决策过程仍然相同 - 成本与收益。

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

答案 1 :(得分:1)

除了Connor的回答之外,请注意索引并不总是访问数据的最佳方式。即使在非Exadata存储系统上也是如此。是否使用索引的过程和注意事项与Exadata无关; Exadata所做的是提供更多不使用索引的原因/能力。

答案 2 :(得分:1)

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

Here's an even simpler example