新疆软件开发

本站首页 软件开发 成功案例 公司新闻 公司简介 客服中心 软件技术 网站建设
  您现在的位置: 新疆二域软件开发公司 >> 数据库开发 >> 文章正文

ORACLE10G新功能ORA_ROWSCN学习

           ORACLE会在表中记录每条记录的最后的变化的SCN。
默认的情况下,每个块中所有的记录的ORA_ROWSCN都是相同的,当块中任意一条记录发生改变的情况下,块中所有记录的ORA_ROWSCN都会变化为最新值,ORA_ROWSCN的最小粒度是块。
当我们使用create table …… rowdependencies;建表的时候,每条记录会有自己的ORA_ROWSCN段,在这种情况下块内的一条记录的更改仅仅会影响该记录的ORA_ROWSCN,不会对块内其他记录的ORA_ROWSCN产生影响。这个时候,ORA_ROWSCN的最小粒度是记录。
            这个功能比较适合那些需要做增量刷新的操作,通过ORA_ROWSCN来迅速的找到那些发生变化的块,忽略那些没有发生变化的块,提高了刷新的效率。
写到这的时候,不知道大家有没有想另外的一个问题,那就是ORA_ROWSCN是怎么实现的,使用ORA_ROWSCN有什么注意的事项么?这是我们大家共同的一个问题,仅仅注意到一个功能积极的部分,很少想这个功能是否适合我,使用这个功能会给系统带来什么样子的风险,而往往风险才是我们需要更多考虑的地方。在数据库方面有一句话还是比较实在的,“无过便是功”。与系统的优化相比,系统的稳定则更加重要一些。
          还是回到ORA_ROWSCN上来吧。
         当我们没有开启rowdependencies的时候,块内的所有记录的ORA_ROWSCN都是一样的,可以猜想oracle会直接读取block head来获得ORA_ROWSCN,因为这样做的话效率会高一些,也更加的方便直接。事实上,oracle也是这样做的。所以在这种情况下,对于DML操作来说,并没有增加任何的开销,block head的scn是肯定要记录的。因此,在默认情况下,使用ORA_ROWSCN并不会带来任何的影响的。
那当我们开启了rowdependencies呢?这个时候块中的每条记录都会有自己的ORA_ROWSCN了,那肯定是在块中完整的记录下每条记录的scn号。这样就带了两个需要考虑的问题,空间上会存在浪费,这部分空间用来记录每条记录的scn。当记录的字段比较多,记录的长度比较长的时候可能影响的百分比会小一些,可是对于那些字段比较少的,记录的长度比较短的表影响将会是巨大的,空间的占用完全有可能增大100%以上。对时间上的浪费也很好理解,在表上的DML操作会更新一个字段,时间的浪费也就是必然的了。
上面的分析仅仅是抽象的,还需要一些测试数据的支持。有时间话,我会做一个测试,看看到底会对空间和时间有多大的影响。
              在论坛上经常会有朋友问,深入的学习oracle到底有没有用?这句问题怎么回答呢,还是那句话,在时间允许的情况下深入学习oracle的肯定是有好处的;在时间不允许的情况下,就要“适度”了,这个度到底是怎么划分呢。拿上面的例子来说吧,如果能知道ORA_ROWSCN的产生原理就应该是足够了,这样经过简单的分析就可以知道ORA_ROWSCN的优点和缺点。
就写到这吧。
作者:未知 | 文章来源:未知 | 更新时间:2008-1-15 16:39:41

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章:
    没有相关文章
    软件技术
    · 开发语言
    · Java技术
    · .Net技术
    · 数据库开发
    最新文章  
    ·Domino平台的优缺点分析
    ·oracle不能连接本地库的解
    ·使用经验整理-TestDirecto
    ·学习sqlserver数据库的维度
    ·sqlserver 多用户并发中如
    ·丢失日志文件后数据库还能
    ·人工智能在数据库sql语句编
    ·数据库学习:Oracle应用程
    ·基础知识:软件测试的要点
    ·技术文章:sqlserver 2008
    ·SQL Server虚拟内存和物理
    ·在MySQL中 describe命令怎
    ·怎样解决视图刷新时出现的
    ·如果忘记了MySQL的root用户
    ·基础学习:基于SQL的sysob
    关于我们 | 软件开发 | 下载试用 | 客服中心 | 联系我们 | 友情链接 | 网站地图 | 新疆电子地图 | RSS订阅
    版权所有 © 2016 新疆二域软件开发网 www.k8w.net All Rights Reserved 新ICP备14003571号
    新疆软件开发总机:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆乌鲁木齐北京中路华联大厦A-5C 邮编:830000