12
返回列表 发新帖
楼主: jayli426

[讨论] 为何 Oracle要以 datablock为单位,以实际记录为单位来读写数据是否OK?

[复制链接]
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
11#
发表于 2013-2-24 14:39 | 只看该作者
本帖最后由 gszoracle 于 2013-2-24 14:49 编辑

首先磁盘的最小IO单位是扇区,目前还不能实现让磁盘只读写1、2、3、4等字节的IO任务,oracle的读写也只能实现N个扇区大小,这就是块;其次,数据也遵循局部性原理,相邻的数据往往要被同时使用到,一次读写整块数据局有利于减少IO次数,提高性能,这种实现方式在操作系统中大量采用,如磁盘驱动的缓冲区、CPU读写内存用到的一、二级cache等等;最后,即使磁盘具有内存的读写特点,快速、按字节读写,oracle也未必会采用按记录读写,因为记录大小因业务需要而变,不利于数据的组织管理,操作系统中内存管理中大量采用分页(也是块)管理便是一个例证。

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
12#
发表于 2013-2-25 10:34 | 只看该作者
现实中,要找到一个人,恐怕也是先找到门牌号或单位名,再找到这个人,不可能直接找到人的。
oracle中,除非每行对应一个物理地址,否则,怎么去发现一条记录而不去读数据块呢?块是容器,行是数据,就像你喝水、喝饮料,不可能直接找你要喝的那一口饮料或水,肯定要先找到你要喝水或饮料的杯子或瓶子,然后,才能喝。除非你给每行对应一个物理地址,但会牵扯很多问题,虽然可以实现,但可能会带来很多问题,比如:性能,可操作性等。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表