SEO秀

您现在的位置是:首页>SEO技术

SEO技术

不要使用SELECT FOR UPDATE

seo秀2020-12-29 21:35:56SEO技术97来源:西安百度推广
在SELECT语句中声明游标时,不要使用 FOR UPDATE从句。适用情形:无论何时都适用。审查关于游标的代码,质疑每个 SEL ECT FOR UPDATE语向。使用 FOR UPDATE从句会锁定行,从而降低事务处置速率。要点:游标是一种壮大的结构,使用适合,能够使编程更快更容易,同时还能加速事务处置。但 FOR UPDATE游标可能会历久锁定数据,降低事务处置速率。参考数据库文档,看是否需要使用 FOR READ ONIY从句,最小化锁的数目。



若是使用适合,游标是异常壮大的数据库控制结构,行使游标可以遍历和处置游标査询(或操作)界说的效果集中的数据。在要指定一个数据集举行遍历或遍历处置数据集中的行时,游标异常有用。数据集中的数据项可以更新、删除、修改或读取,也可以被其他历程査看。游标的真正壮大之处在于可以作为程序设计语言的扩展,由于许多历程和面向对象的程序设计语言都没有提供内置的治理关系数据库的数据集的功效。在高速事务处置系统中,在SEL,ECP游标中使用 FOR UPDATE从句可能造成问题,甚至造成死锁。

在许多数据库中,一旦打开了具有 FOR UPDATE从句的游标,那么该语句查询到的行都会被锁住,直到会话中执行到了提交或回退语句为止。 COMMIT语句会保留修改, ROLLBACK语句会作废所有的修改。执行到这两个语句中的任何一个,与数据库中的行相关的锁都会被释放掉。此外,执行了提交或回退语句后,你就会失去在游标中的位置,不能再从游标中提取记录了。

暂停一下,你能发现游标SELECT OR UPDAI8E至少可能会造成两个问题吗?第一个问题是,游标会在执行操作时一直保留数据库行的锁。在许多情况下,这样可能都是有用的,甚至在少数情况下,这样做是不可避免的,或者是最佳方案。然则,在执行某些操作时,这些锁会使其他事务一直壅闭或守候。若是这些操作很庞大或需要破费一些时间,那么就会堆起许多待处置的事务。若是正好这些事务是游标执行 SELECT FOR UPDATE操作要执行的,那么我们可能就会创建了一个守候行列,而行列的处置时间是用户不能接受的。在Web环境中,让缺乏耐心的用户守候漫长的响应会造成他们提议更多的请求,而这厥后的请求有可能会完成得更快。效果是灾难性的,我们的系统会停机,由于待处置的请求堆在数据库端,最终会造成Web服务器占用了所有TCP端口,从而住手响应用户。

第二个问题前面提醒过,是第一个问题造成的。必须等到之前的锁清除了,后面的游标才能对当前锁住的一行或多行加锁。注重,这些锁可能不是游标加的,它可以是用户加的显式锁,也可以是 RDBMS加加的隐式锁。数据库中的锁越多,事务聚积的可能性越大,虽然有些锁是必须的。历久保留的锁会造成对经常请求的数据的响应时间变慢。有些数据库,如 Oracle,有选用的天键子NOWA 可以把控制权释放

(责任编辑:网络)

发表评论

评论列表(23人评论 , 97人围观)
  • 2021-02-25 16:50:50

    女人假装高潮来维持恋爱,而男人假装恋爱以获得高潮。

  • 2021-07-08 06:48:36

    铁杵能磨成针,但木杵只能磨成牙签。材料不对再努力也没用。

  • 2021-01-18 01:03:11

    世上会有很多出人意料的事,比如,你以为我会举个例子。

  • 2021-02-01 10:43:50

    只要你每天坚持学习,最终胜利肯定是属于,在考场上发挥好的人。

  • 2020-12-30 17:38:54

    早上班一小时没人记得,早下班一分钟就被人惦记。

  • 2021-01-10 07:42:37

    你的眼界,不止局限于你的生活环境,还局限于你的视力范围。

  • 2021-01-01 06:35:38

    精神濒临崩溃的症状之一,就是相信自己的工作非常重要。

  • 2020-12-30 23:10:59

    人生就像一个茶几,上面摆满了杯具。