一关于个数据库存储过程锁的问题

fir01 发布于 2016/02/17 13:26
阅读 350
收藏 0

场景:公司有个表的数据,基本有上百个地方需要更新到,有时是批量更新,有时是单行更新,更新时会关联多个实时的数据表,根据业务的复杂程度不同而有不同。

问题:怎么保持数据一致性呢?不因脏读产生错误数据?

之前是结合mysql和java的锁做的。想在想干脆把这个表相关的业务逻辑封装到存储过程算了?一是存储过程高效,另外之后管理也方便,不要到处找代码。但是怎么保证这个存储过程调用是有队列性质的?上一次调用执行完成才执行下一次?或者说mysql里面有类似java里面的锁机制吗?

就业过的公司都是禁止写存储过程和函数的,请mysql高手指导下怎么做恰当,谢谢

加载中
0
kakai
kakai
禁止写存储过程和函数?这是有多偏激?领导没本事驾驭就要禁止???
聽雨人
聽雨人
回复 @fir01 : 我个人觉得,规划代码好过写存储过程。如果代码规划不了的话,如何保证存储过程就不会乱?
fir01
fir01
就是因为这是系统里面唯一现在难控制到的表,像楼上说的:到处是不同同事写的和这几张表相关的java代码和sql代码,管理上要控制太难。 所以才想控制在某个存储过程里,控制在唯一的入口里面。
聽雨人
聽雨人
回复 @BoXuan : 其实说白了,就是,在非必需的情况下,引入新的技术进入项目,会增加不必要的成本。
聽雨人
聽雨人
回复 @BoXuan :第一点, 我接触过的项目,没有需要考虑到这个的性能问题。这可能是行业不同吧。第二点,sql干业务的事情,代码也干业务的事情,没有统一,招人成本高,维护成本高,又要会开发又要会sql。第三,sql加上版本管理,测试上线,必定需要另一条流程,运维部署成本增加。
kakai
kakai
回复 @聽雨人 : 有些公司还鼓励多用存储过程(即使一个简单的查询),原因:1、它是预编译的,比实时编译sql快;2、当现有数据库不能满足需求的时候更换为其它大型数据库时,只要统一在一个sql文件中修改即可; 当然再好的东西都不能滥用,滥用了又没一个系统规范说明,那样才是不可控的,对后续接手人员是灾难
下一页
0
G7
G7
调用啊,存储过程调用
0
vvtf
vvtf
for update?
fir01
fir01
锁表也不太现实,因为会导致系统整个慢。经常某些原因没释放锁,尤其是新手常犯的错误。
0
sss6666
sss6666
用乐观锁不行么?
0
嘻哈开发者
嘻哈开发者
用事务啊,mysql默认的事务隔离级别是不会出现脏读的。再加上乐观锁,其本上都满足要求了。
返回顶部
顶部