mysql 不使用事务_如果不使用事务是否会造成个别数据插入失败的情况呢?

事务是用来确保你插入的原子性的,不是用来确保成功率的

比如说,你现在是一个电商系统,有用户的订单表和商品表,现在用户下单了,你要先插入订单表然后同时更新商品库存量-1(并且商品库存不能<0)

insert into user_order XXXXXX;

update goods set inventory = inventory - 1 where goods_id = XXX and inventory > 0;

这时候你就得用事务,也就是确保订单创建和更新商品余量必须同时都成功,或者都失败(比如没有余量了),并且在失败时妥善告知客户商品卖完了。如果不使用事务,这个场合下有可能会产生脏数据,就是订单创建出来了,但是库存量没有-1(因为刚好别的用户买走了另一个),就造成了事实上的超售

至于数据库插入失败的情况各种多,比如说连接断开了,磁盘写满了,连接数过多导致响应缓慢,超时等等,这些是事务所无法应对的

最后MyISAM并不支持事务

补充回答评论中的问题

MyISAM和InnoDB选择哪个是个经典问题,但是归根结底其实是一句话,要看你的具体使用场景。

从整体来说,如果你的MySQL足够新(5.6以及以上),我建议你还是使用InnoDB,特别是对于大量写入的表尤其是如此,另外如果你有批量insert和update,你可以获得事务带来的极大的提升的性能的好处

InnoDB的优势领域:较多主键查询,索引,需要行锁,写入频繁,需要用到外键,当然还有事务

MyISAM的优势领域:5.6以前的MySQL版本全文索引,count很快,大部分情况下只有select的只读表(其实随着MySQL的版本迭代和InnoDB的完善,它的领域已经越来越小)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值