|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。server|sqlserver|办理实在一切的逝世锁最深层的缘故原由就是一个:资本合作
体现一:
一个用户A会见表A(锁住了表A),然后又会见表B
另外一个用户B会见表B(锁住了表B),然后妄图会见表A
这时候用户A因为用户B已锁住表B,它必需守候用户B开释表B,才干持续,好了他白叟家就只好老厚道其实这等了
一样用户B要等用户A开释表A才干持续这就逝世锁了
办理办法:
这类逝世锁是因为你的程序的BUG发生的,除调剂你的程序的逻辑别无他法
细心剖析你程序的逻辑,
1:只管制止同时锁定两个资本
2:必需同时锁定两个资本时,要包管在任什么时候刻都应当依照不异的按次来锁定资本.
体现二:
用户A读一条记录,然后修正该条记录
这是用户B修正该条记录
这里用户A的事件里锁的性子由共享锁妄图上升到独有锁(forupdate),而用户B里的独有锁因为A有共享锁存在以是必需等A释
放失落共享锁,而A因为B的独有锁而没法上升的独有锁也就不成能开释共享锁,因而呈现了逝世锁。
这类逝世锁对照潜伏,但实在在稍年夜点的项目中常常产生。
办理办法:
让用户A的事件(即先读后写范例的操纵),在select时就是用Updatelock
语法以下:
select*fromtable1with(updlock)where....
据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。 |
|