福州软件开发有限公司是一家专业从事软件开发、软件定制、App开发的软件公司。 新闻| 联系我们 咨询热线>>  135-1408-4304 手机端
不要使用SELECT FOR UPDATE_福州软件开发定制公司


在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 可以把控制权释放

给进程,用于执行其他的工作或在再次取得锁之前等待。但是,如果游标必须处理某些同时发生的客户请求,那么对用户来说,最终结果是一样的,就是客户端请求都需要等待很久才能得到响应。

注意,有些软件制作数据库默认会在游标中使用 FOR UPDATE从句。事实上,ANSI的SQL标准指示,任何游标都要默认使用 FOR UPDATE从句,除非它在 DECLARE语句中使用了 FOR READ ONLY从句。开发人员和DBA应该参考他们的数据库文档,看看如何开发锁最少的游标。




相关文章
图片如何营造最佳用户体验_福州软件开发定制公司
如何建立网站良好的用户体验?_福州软件开发定制公司
网站访问者分析_福州软件开发定制公司
B2C网站的信任危机_福州软件开发定制公司
并发用户数需求分析_福州软件开发定制公司
不断地接力,以用户为导向的营销_福州软件开发定制公司
如何增加导入链接?网站导航如何SEO优化?_福州软件开发定制公司
行业动态网页的宽度_福州软件开发定制公司
市场营销环境的特点_福州软件开发定制公司
完善检索能力_福州软件开发定制公司
杜绝虚假口碑_福州软件开发定制公司
FTP 站点的远程管理_福州软件开发定制公司
优秀的网站有哪些特点?_福州软件开发定制公司
慎用第三方解决方案扩展_福州软件开发定制公司
网站的信息设计_福州软件开发定制公司
如何进行网站的真实用户监控(RUM)?_福州软件开发定制公司
软件开发软文营销的特点_福州软件开发定制公司
不要过度设计你的网站_福州软件开发定制公司
行业动态网络信息技术_福州软件开发定制公司
网站设计发布元素_福州软件开发定制公司


福州软件开发定制公司专注于福州软件定制、福州外包、福州软件开发、管理软件/管理系统开发、微信开发、小程序开发          公司地址:福建省福州市仓山区红江路2-1号泰坤中心3层  联系电话:135-1408-4304

ONLINE SERVICES

咨询电话
135-1408-4304
在线客服
QQ咨询
QQ咨询
QQ咨询
服务时间
9:00 - 24:00