1

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

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

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

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

4

3 回答 3

2

指数的决定独立于平台。它始终是相同的过程,即:

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

费用

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

好处

  • 更快的响应时间

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

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

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

于 2018-02-02T03:10:33.053 回答
1

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

于 2018-02-02T04:02:07.800 回答
1

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

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

于 2018-08-23T18:22:27.883 回答