SQL 数据库 锁,有请高手给小弟分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 数据库 锁,有请高手给小弟分析相关的知识,希望对你有一定的参考价值。

数据库好像都加表锁行锁的,最小到行锁
那同行数据 有部分更新 是不是不能读该行没正在更新的数据呀,
有没有办法解决这个问题,难道是做两张表么,一张用来读,一张用来更新(当然用来读的表也要更新,只是延时更新),
请高手给小弟 指条明路

select查询时是共享锁,这时候还可以在其上叠加共享锁,但不能加排他锁。
DML操作时是排他锁,这时候在其上不能再加任何类型的锁。
因此同行数据有部分更新是不能读该行没正在更新的数据的。
实际上在实际数据应用中这种情况非常普遍,只要在写SQL语句时注意利用好索引,加快语句的执行效率,另外一条需要记住的是在数据库繁忙之时(如银行上午9-11点和下午2-4点间柜台业务繁忙,中心机房的数据库很繁忙),不要执行大批量的数据查询和更新操作。尽量将这些处理大量数据的操作放到数据库空闲时间去做。
本人经常处理上千万条记录的表,只要掌握得当,这些问题应该不是个问题的。至于分两张来做,还需要数据的同步,你还是解决了这个问题的。
使用高效的SQL语句,那些处理时间稍纵即逝,数据库SQL操作也是有排队机制的,如果因为SQL语句效率低下,造成后面的排队时间等待过长,会time out 的。
因此只要使用高效的SQL语句,你说的这些问题是无需担心的。
参考技术A 如果用的是SQL Server,要在更新时读取,只需要给表加个标志就行,如:select * from table(nolock),
为了更新不对其他行造成影响,可以给表加上with(rowlock) ,update table with(rowlock)追问

小弟意思是说要:同表同行 数据更新(部分),读取(不是更新部分) 能同时实时进行么, 用 nolock能解决么,
小弟还是不是很清楚,请大侠指教,谢谢

追答

可以.nolock表示不管表是否被锁,都可以查询

本回答被提问者采纳
参考技术B select * from table1(nolock) 这样在读取的时候不会锁表追问

与更新实时同步 能进行么,这与 排它锁 独占锁 有呀矛盾吧 这是个人想法
请给小弟分析清楚点为谢

求教高手,初学javaweb,有一个关于抽奖后台程序的疑惑

小弟正在做一个抽奖的项目,前端程序用jquery ajax,后端程序负责用概率算法计算中奖数字,返回给ajax,而且负责和数据库交互,插入和更新数据。我把完成这一功能的程序都写在一个jsp中,但听说这样做不对,有sql注入的危险,而且这也不是正确的做法,ajax请求的程序一般用severlet,小弟对severlet也不熟。求教大侠们,完成这个功能的ajax请求的后台程序的正确写法

参考技术A 所谓sql注入就是有些数据需要用户输入提交给后端,而后端又是采用拼字符串的形式组成的sql语句,这样很容易被sql注入,这样输入的数据可以把sql中加上一些sql的符号,比如分号 单引号加上sql的and or等符号把你的sql改掉,这是sql注入
所以关键不是使用jsp和使用servlet的区别,是有没有用户提交和后段是否是拼接的字符串
因为是抽奖所以不存在使用用户输入的数据对数据库操作,所以不会有sql注入问题追问

谢谢大侠,但是我感觉我ajax请求jsp不是主流的做法,是不是应该写成servlet才正规,才符合开发模式,主要是我不太知道servlet的用途,我感觉jsp要更简单一点

追答

jsp就是给servlet封装了一下,目的就是方便你写html代码,在servlet里写的html代码都需要使用out。print输出才行,而jsp里你可以直接写,区别仅限这些,对于你的ajax请求,不需要html代码,只需要很简单的json数据就可以,所以使用servlet比较合适,这也是为什么jsp作为展现层,而servlet作为控制层的原因

参考技术B 既然你都已经可以在JSP页面实现功能了,那要放到servlet中去实现应该是很简单的吧,无非就是把JSP页面中处理逻辑的代码搬到一个servlet里面并且把表单参数的传递指向servlet,在从JSP页面接受servlet处理后返回的结果。追问

求教大侠,表单参数,指的是什么

追答

既然你说了摇奖了,那肯定需要有开始摇奖这么一个按钮吧,当用户点击以后就把请求提交到相关的servlet去处理,

本回答被提问者采纳
参考技术C 这个这样不太好说。
首先。在javaweb中jsp与servlet是等价的。只是servlet是比较直观的java类
jsp是在运行时编译成class来运行。

你给出一个邮件吧,然后给你发一下servlet的demo.
你参考一下。

以上是关于SQL 数据库 锁,有请高手给小弟分析的主要内容,如果未能解决你的问题,请参考以下文章

在Delphi中如何控制往Excel的工作表中传入文本文件数据的问题?有请高手

SQL SERVER 中如何使用行锁? 为啥我写的行锁锁不住啊?高手快来吧

java如何获得网络rtsp流高手指点下最好给一个demo小弟先谢过了

有谁能把下面的json的代码用通过程序后台把它给解析出来吗,无论用啥办法都行,算是小弟求求高手了..

wamp 的phpadmin 打不开 有请高手赐教!

高手帮我来分析分析这段css 样式 谢谢了