到底什么情况下需要使用 MySQL 事务?

2021-09-01 18:42:24 +08:00
 wangbenjun5
众所周知,MySQL 事务具有原子性,当你需要对对张表同时进行操作的时候,为了保证要么都成功,要么都失败,必须使用事务机制。

但是仔细想想,举个例子 insert 操作,除非是 sql 语句写的有问题,正常情况下很难出错,除非是网络连接失败、数据库挂了、连接池满了等意外情况。这些都是极低概率事件。

然而如果同时操作的表不在一个库就操蛋了……所以去 tm 的事务,听天由命吧,大不了表里面多几条废数据,用什么事务!我不用了
6786 次点击
所在节点    MySQL
50 条回复
tairan2006
2021-09-02 14:21:02 +08:00
、楼主脑子里没有并发的概念么
sakasaka
2021-09-02 14:21:25 +08:00
防止安全事故还有就是简化代码逻辑
zxcslove
2021-09-02 14:23:14 +08:00
就发泄情绪呗,谁还没个情绪了,哈哈哈
chendy
2021-09-02 16:10:04 +08:00
看了下楼主的历史发帖,细思极恐
timethinker
2021-09-02 17:31:29 +08:00
事务改善了人们的生活,让我们可以用一个简单的编程模型来屏蔽底层的不确定性,这本身就是一个很伟大想法,但是要善用,很多情况下,问题不在于客观事物本身,而在于人。
Chinsung
2021-09-02 17:42:29 +08:00
首先开个事务对代码要求也不高吧,在 Spring 加个注解就完事了。分布式事务另说。
其次就是,开不开事务对你实际执行的速度,影响应该没有想象中的大吧?
在多条 sql 的情况下,使用很小的代价就可以获得原子性等等等特性,有啥麻烦的?
goodboy95
2021-09-02 20:02:53 +08:00
我的系统,有些功能前前后后要改十几次数据,没事务会死的
ninglg
2021-09-02 23:33:57 +08:00
如果只需要考虑正常情况,那程序的世界就太美好了
zoyua
2021-09-03 10:03:46 +08:00
呃,事务还是很重要的
xipushi
2021-09-03 17:22:08 +08:00
我碰到 java 代码里面, 基本不需要特别关心事务提交。

同事写了个事务+异步的代码,查了我大半天

```
@Transactional
methodA(){
Object a = reponsitory.save();
async methodB(a.id) //异步调用
.....
//若干操作
}


methodB(id){
reponsitory.findById(id) // 这里偶尔查不到数据
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799323

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX