123
返回列表 发新帖
楼主: 超级野人

大家说说oracle引入extent概念的目的是什么?

[复制链接]
论坛徽章:
1
授权会员
日期:2009-03-23 21:53:59
21#
发表于 2004-10-23 13:08 | 只看该作者
最初由 超级野人 发布
[B]是不是这个原因呢,可是我认为,磁盘上的空间分配应该是操作系统的事情,比如说oracle想分配10个连续的block,在逻辑上可能是连续的,可是操作系统分配空间应该是以数据块为单位分配的,所以也有可能在物理上这些数据块不是连续的,又没有这种可能呢? [/B]


呵呵 it's wrong
磁盘的空间分配数据库系统自己来实现的,而不是由操作系统来作,包括内存管理,页面的调度等等,而且由于实现的原因,不同的操作系统如oracle的磁盘内存管理都采用了自己的方法。
对数据库来说,最重要的是事务管理和并发控制

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-03-23 21:53:59
22#
发表于 2004-10-23 13:11 | 只看该作者
其实说白了 数据库管理系统比操作系统技术含量高多了,能实现一个数据库系统相当于已经实现了一个操作系统的内核

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
38
ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14现任管理团队成员
日期:2012-10-18 17:11:21版主4段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23
23#
发表于 2004-10-25 23:02 | 只看该作者
最初由 wqhhust 发布
[B]1:一个extents只能分配给一个对象,例如table,它保证了在一定的存储空间内相连的block属于同一个table

2:oracle性能调优的一个要素就是尽量减小物理IO,假如没有extents,只有block,那么相连的block不一定属于同一个table,这时就不能使用一次读入同一个table的多个block的方法,而一次读入同一table的多个block有时能大大提高系统的性能,例如在对table进行full table scan时,oracle可以一次读入几个block,这样就能减少物理IO的次数

3:oracle需要在数据字典中记载对象(例如table)在文件中的物理位置,如果没有extents,那么table占据多少各块,就得有多少个条目与之相对应,对于上千万条的记录来说,数据字典中的条目数不是一个小数目,如果有extents,数据字典只要记录extents个数就行,而extents个数可以控制得很少,因为extent的大小可以呈指数递增 [/B]


1:赞同!但这好像不是Extent存在的理由啊,难道没有了Extent,Oracle就不能保证在一定的存储空间内相连的block属于同一个table吗?
2:鼓掌!但我还想补充一点儿,为对象分配一个区而不是一些块可以减少系统在分配空间的系统开销,也就提高了性能。就像我们吃饭是一口一口地吃,谁也不会一粒一粒地吃吧?Oracle分配Extent的动作不可能是先分配若干个Block然后再把这些Block组合成Extent的,就像我们不会把米一粒一粒夹起来再一口气吃下去一样。
3:不赞成,因为感觉有些牵强,但也提不出什么反对意见。总之,数据字典当然是越小越好,因此在Oracle9i已明确建议使用本地管理的表空间了,对于这种表空间,pctincrease没用了,因为它每个Extent通常是大小相同的,Extent的信息也留在数据文件头部而不是数据字典了,不仅消除了由pctincrease引起的碎片也减少了数据字典的体积,从而提高了性能。
    有不当之处,望不吝赐教!

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
24#
发表于 2006-6-15 17:17 | 只看该作者
最初由 hilbert_2003 发布
[B]

呵呵 it's wrong
磁盘的空间分配数据库系统自己来实现的,而不是由操作系统来作,包括内存管理,页面的调度等等,而且由于实现的原因,不同的操作系统如oracle的磁盘内存管理都采用了自己的方法。
对数据库来说,最重要的是事务管理和并发控制 [/B]



the physical structure of an oracle database is determined by the operating system files that provide the actual physical storage for database information.
不知道我这段理解是不是错的,我觉得磁盘的分配应该是OS控制的吧

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33生肖徽章2007版:鼠
日期:2008-01-02 17:35:53ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512013年新春福章
日期:2013-02-25 14:51:24
25#
发表于 2006-6-20 11:03 | 只看该作者
最初由 eagle_fan 发布
[B]

extent是物理上连续的db block,而不是逻辑上的连续
Oracle可以知道自己分配到的os block是不是连续的
extent是不能够跨越数据文件的 [/B]



我也对这个问题比较迷惑
从Concepts上没有说明是物理上或逻辑上连续

An extent is a logical unit of database storage space allocation made up of a number of contiguous data blocks. One or more extents in turn make up a segment. When the existing space in a segment is completely used, Oracle allocates a new extent for the segment.

如果是物理上的连续在RAID环境下,怎么保证是物理上的连续呢?

请高人指点

使用道具 举报

回复

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

本版积分规则 发表回复

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