关于事务,锁,好纠结,感觉不知道它们之前自己写的一堆代码全是废!

浏览:1900 发布日期:2015/10/08 分类:求助交流 关键字: php mysql 事务 表锁 MyISAM InnoDB
我感觉任何项目都有事务加锁的必要,只要是两条上下文相互有联系的sql都必须使用事务加锁,比如:发表一篇帖子,新增,如果成功,用户的积分就+1,这样两条sql之间是有联系的,如果其中一条失败就要回滚事务,但是像Discuz为什么都是使用的MyISAM引擎,不支持事务,不知道为什么,为什么,为什么,我好纠结,为什么,真的好纠结,这难道能不使用事务吗,如果帖子发表成功了,但是用户积分+1失败了怎么办,不能回滚,但是帖子已经发出去了怎么办,怎么办,这还是一个最简单的场景,谁能告诉我Discuz MyISAM 不用事务怎么解决这些问题的吗?谢谢!

没有使用事务,没有使用锁,感觉之前写的任何代码全完了,一点也不可靠,数据一点也不牢固,php是“任务流程型”语言(相对于js事件型来说的),一个流程可能有很多sql,发帖,更新用户资料,更新文章,下单…… 这些没个动作流程可能有不知一条sql,试想如果执行一条sql时失败了怎么办,你可能会问怎么会前面的执行成功,后面的失败,我就是说会失败,就是假定某条会失败,比如突然服务器突然断电,卡死了,发地震海啸山洪了……反正我就是假定如果有一条出错了怎么办,

这样想那就是一个流程中 除非只有一条单独的查询语言,否则必须使用事务锁等机制来确保数据的完整性,不然的话那你就是闹眼子。

但是为什么dz,wordpress等等好多都是使用的MyISAM表类型呢,也就是说没有事务,我真心纠结死啊。

希望大神给我指点,不吝赐教,我没齿难忘,先谢谢了!

^_^
最佳答案
评论( 相关
后面还有条评论,点击查看>>