当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-01-25 22:55:00  来源:本站整理

Oracle数据库编写有效事件指导方针-性能调优[Oracle防范]

赞助商链接



  本文“Oracle数据库编写有效事件指导方针-性能调优[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
  在Oracle数据库中,供应了一种被称为"事件"的掌握机制.通过事物,可以完成对数占据效安全的改正操作,使数据库中的数据到达一个数据一致的状况.举个简单的例子,目前有一个借书系统中设触及到两张表,一张是图书库存表,一张是用户借书情形表.在用户借书的时刻,数据库需求举行两个操作,一是从图书库存表中扣掉库存;另一个操作时在用户借书表中加入这个借书操作.数据库在操作时,常常是先扣减库存,然后再在用户借书情形表中加入借书记录.假定用户在借书的时刻,第一步操作成功,即已经从图书库存表中扣除了某书的库存;但是,在第二步时由于发现用户借的书已经超量大概发现用户的卡中还有罚款不可以借书时,借书就会不成功.若没有事件做掌握的话,很明显图书库存就会不准.而在事件的管理下,当第二步不成功的话,第一步操作就会发生回滚.也就是说,事件可以把数据库的好几个操作步骤当作一个整体,当此中有某个操作没有成功的话,则全部操作城市发生回滚.Oracle数据库就是通过这种机制来保障数据的一致性问题.

  但是,事件若编写的不好的话,则不但起不到应有的作用,还会大大降低数据库的性能.如在数据库事件履行时间对比长,就很有大概招致锁冲突,从而降低数据库的并发拜候性能.所以,数据库管理员在编写事件时,还是需求服从几个指导方针.

  指导方针一:在事件中尽大概使得拜候的记录最小.

  在事件中,若履行Update等记录操作语句,数据库为了保障数据的一致性,会对其所拜候的记录加锁,避免在同一时间内其他用户对其改正.此时,若其他用户需求拜候加锁的记录,则必须等候.此时就会发生锁冲突.

  所以,在事件中要尽大概使得拜候的记录量最小.如此便可以削减锁定的行数,从而削减事件之间的冲突.这要求数据库管理员在事件中尽大概切确的定位语记录.如在数据库中读取记录时,最好可以利用Where语句举行定位.并且在编写Where语句的时刻,要尽大概的具体,最好可以实现一对一,则是最好的.

  如在库存盘点的时刻,事件处理语句需求从数据库中读取一定数目的记录,并且为这些记录举行加锁.此时,若记录读取的过量的话,就会对其他用户拜候表中的记录造成麻烦.为此,数据库管理员应当倡议利用前台利用程序在开辟的历程中,加入一些限制条件.如按照产品的分类来更新库存.如此的话,便可以削减一个事件一次性读取的记录数目,从而把锁的影响降低到最低.

  指导方针二:保持事件尽大概的简便.

  在事件中尽大概使得拜候的记录最小,这是从数目的角度来考虑锁冲突.而保持事件尽大概的简便,则是从时间的角度来考虑避免锁冲突的事情.保持事件尽大概的简便,主如果要求数据库管理员在编写事件的时刻,不要把事件写的太过于宏大与复杂.不然,事件在履行的时刻就会占用对比多的时间.而这直接招致的后果就是数据库会把某些记录、乃至一张数据表锁住对比长的时间.这就会恶化锁对数据库的负面影响.

  故当用户在知道了必必要举行改正的记录之后,就要即刻启动事件;并且在最短时间内履行完相关的改正语句,然后当即递交大概回滚.并且,只有在确切需求时,才翻开事件语句.具体的来说,数据库管理员在事件的简便性方面,可以尝试以下办法.

  一是在同一个事件中不要加入过量的改正大概删除语句.如当用户需求更新用户信息表中的相关数据.比方在员工的编号前加入YG前缀并且同时按照员工入职年份计算员工工龄.这两个更新语句若从技术上来说,放在同一个事件中并没有什么不当.但是,当员工数目对比多时,若把他们归并在一同,则这个事件履行得时间会对比久.为此,最好在更新数据库表的时刻,若预计履行时间会对比长,则最好可以把更新语句举行分割,如一列列更新等等.

  二是在更新时,若一次性更新的语句对比多,最好可以挑选符合的时刻更新.更新某个数据库中记录,其履行所需求的时间常常跟数据库的记录成正比.其记录越多,更新所需求的时间越多.为此,笔者倡议,当需求更新的记录对比多的时刻,最好可以挑选公道的机会.若有些利用程序在计划时,可以把这个更新放在后台处理.如此的话,利用程序便可以挑选数据库对比空的时刻,来更新表中的记录.这无疑可以在很大程度上降低事件对数据库的负面影响.   以上是“Oracle数据库编写有效事件指导方针-性能调优[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • SQL Server中利用Linkserver衔接Oracle的办法
  • Oracle数据库网络与安全FAQ精辟堆积
  • Ubuntu 9.10下安装Oracle10g
  • Ubuntu 10.04 下安装Oracle 11g
  • oracle盲注报错语句和oracle提权语句汇总
  • oracle中to_char、to_number、to_date的用法
  • Python模拟Oracle的SQL/PLUS工具的实现办法
  • Oracle数据库访谈之最年青的OCM访谈
  • oracle表数据误删复原
  • Oracle数据库笔记--表空间
  • Oracle数据库树形查询的代码示例
  • oracle中记录和调集
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .