ORACLE rowid,file# 和 rfile#
- rowid简介
rowid就是唯一标志记录物理位置的一个id,在oracle 8版本以前,rowid由file#+block#+row#组成,占用6个bytes的空间,10 bit 的 file# ,22bit 的 block# ,16 bit 的 row#。
从oracle 8开始rowid变成了extend rowid,由data_object_id#+rfile#+block#+row#组成,占用10个bytes的空间, 32bit的 data_object_id#,10 bit 的 rfile#,22bit 的 block#,16 bit 的 row#.
由于rowid的组成从file#变成了rfile#,所以数据文件数的限制也从整个库不能超过1023个变成了每个表空间不能超过1023个 数据文件。
- 比较file#和rfile#
file#标识逻辑标识,
rfile#标识对应segment的标识
归根结底的原因是因为 ROWID 的存储格式造成的.
因为 rowid 中文件编号标志只有10bit,最大数据容量1024,由于不存在0编号文件,所以实际上只允许1023个文件编号。在oracle8 之前的版本的数据库中,rowid是受限的,只包括 file# /block# /row# ,则数据库最多只允许1023个文件。
而oracle8开始rowid 包括 data_object_id# / Rfile# /block# /rowid# 。data object id 的引入,同时支持了表分区的概念,一个表可以拥有多个分区(segment),而一个分区可以在不同的表空间中(由Rfile# 表示在segment对应的表空间中对应的 相对文件编号)。这样表的容量也增大了。 扩展的rowid使得oracle不再局限于数据文件只能有1023个的限制,而一个表可以分区,也使得表的容量不再局限于单个表空间中(1023个文件的限制)。
最新文章
- Favorite Setting
- MongoDB 副本集管理(不定时更新)
- bootshrap会改变IE浏览器滚动条样式
- 2013 ACM/ICPC 长春网络赛E题
- JavaScript调试技巧之console.log()详解
- [转载] 深入理解Linux修改hostname
- Android5.0新控件CardView的介绍和使用
- [DevExpress]GridControl 同步列头checkbox与列中checkbox状态
- [C入门 - 游戏编程系列] 贪吃蛇篇(四) - 食物实现
- php+ajax+json
- 为什么要初始化CSS?
- SQL企业级面试题
- [翻译]【目录】编写高性能 .NET 代码
- 【腾讯Bugly干货分享】舞动的表情包——浅析GIF格式图片的存储和压缩
- 10.21CRM项目(01)
- Effective C++笔记:继承与面向对象设计
- 基于Apache在本地配置多个虚拟主机站点
- ArcEngine9.3迁移至ArcObject10.1
- [VB.NET][C#]二维向量的基本运算
- [洛谷P3228] [HNOI2013]数列