首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle数据存储-数据块

Oracle数据存储-数据块
EN

Stack Overflow用户
提问于 2017-10-23 16:18:56
回答 1查看 37关注 0票数 0

如果行被迁移(或链接),它的rowid不会改变以反映新的block.Why。保留旧的ROWID是否有好处,即使它指向一个块,该行不再驻留在其中?

EN

回答 1

Stack Overflow用户

发布于 2017-10-23 20:28:47

Tom Kyte几年前就回答了这个问题。

请参阅:https://asktom.oracle.com/pls/apex/asktom.search?tag=row-migration

他将原因描述为两方面:

  • Oracle希望在尽可能多的情况下保持rowid常量,以便它不会意外更改并破坏依赖它的工具。
  • 偶尔花费额外的I/O来跟踪转发rowid比在迁移发生时“更新大量索引数据”效率更高。

就我个人而言,第二个原因对我来说从来都没有意义。不清楚为什么维护索引需要的不仅仅是删除原始条目(在DELETE语句中会发生)和添加新条目(在INSERT中会发生)语句。是的,这是更多的工作,但如果您没有查询足够的数据来证明额外的工作是合理的,那么您一开始就不会有索引。

不过,我相信第一个原因。甲骨文似乎确实试图在可能的情况下保持rowids的不可变性。我不知道这是不是有根本的原因,或者只是因为他们的一些工具(例如Oracle Forms)依赖于它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46884768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档