我是Oracle Exadata的新手。我的问题是,指数或不指向Exadata中的索引?
发现一些博客说不是索引数据库索引而只是暂时的存储索引,但没有来自Oracle的官方文档说没有在Exadata中编制索引。
如果我在Exadata中编制索引有什么问题? (因为它是在内存概念中实现的),它会改善或降级性能吗?如果已经创建了索引,是否更好?
我们拥有1500万以上的巨大数据,并且在Oracle Exadata中增加了Varchars,CLOBS和其他常见数据类型。除主键外没有创建任何索引。为什么查询需要花费10到12分钟(来自1500万条记录,简单的选择查询,其中条件很少)才能执行?甲骨文表示,Exadata是全球最快的数据库。
答案 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中;)