美文网首页sql
事务并发的问题和死锁

事务并发的问题和死锁

作者: 剑道_7ffc | 来源:发表于2019-04-16 07:11 被阅读9次

事务并发带来的问题和如何解决?

脏读

针对未提交的数据

若没加锁之前,事务A在id=1读出的数据是18,但因为事务B回滚掉,导致是脏数据,解决办法:加排他锁

不可重复读

针对其他提交前后,总记录数不变,重点是修改

幻读

针对其他提交前后,总记录数发生改变,重点是新增或插入

隔离级别

分类

innodb对隔离级别的支持

死锁

死锁是什么

事务之间相互等待对方锁的释放

例子:

BEGIN;

update users set lastUpdate = NOW() where id = 1;

update t2 set `name`='test' where id =1;

rollback;

--其他会话

BEGIN;

update t2 set `name`='test' where id =1;

update users set lastUpdate = NOW() where id =1;

rollback;

死锁的避免

1类似的业务已固定的顺序访问表或行,目的避免形成循环

2如果条件允许,大事务拆小。原因:大事务出现死锁的概率较大

3在同一事务中,尽可能一次锁住所需要的所有的资源

4降低隔离级别

5为表增加合适的索引,因为若不走索引锁的是表锁

相关文章

  • 事务并发的问题和死锁

    事务并发带来的问题和如何解决? 脏读 针对未提交的数据 若没加锁之前,事务A在id=1读出的数据是18,但因为事务...

  • MySQL笔记-锁、事务与并发控制

    MySQL服务器逻辑架构 MySQL并发控制 MySQL死锁问题 MySQL中的事务

  • Mysql学习(六) 行锁

    行锁、死锁、死锁监测 两阶段协议锁,如何安排正确的事务语句,可能影响并发度的锁尽量往后放 死锁和死锁监测,如何减少...

  • 死锁问题和并发问题

    如果没有锁就不存在死锁问题。 因此死锁问题是并发问题的衍生问题,因为要解决并发问题,就设计了锁这个解决方案,因为要...

  • MySQL InnoDB锁机制

    在我们的日常工作中,经常会遇到各种死锁的场景,有的死锁分析起来是比较容易的,比如同类型的事务并发引起的死锁;而不同...

  • Java Concurrent 死锁

    前言 死锁是一个比较大的概念,在并发场景下的加锁行为都有可能产生死锁问题。在Java 并发编程中会有死锁,操作系统...

  • 1、mysql没有设置索引引发的死锁问题

    死锁日志 死锁日志 测试索引对于多事务的影响,也是并发的影响。 1、开启两个客户端工具,操作同一张表。t_noti...

  • 高性能 Mysql 第一章第三节 事务

    这一章节主要是介绍了事务的必要性,四要素,即(ACID),隔离级别,死锁,事务,多版本并发控制。其中事务必要性我这...

  • MySQL Innodb 事务隔离级别

    Reference 事务并发的可能问题与其解决方案脏读、幻读、不可重复读和丢失更新数据库并发事务存在的问题(脏读、...

  • SQL 多个事务并发时可能遇到的问题

    Reference 事务并发的可能问题与其解决方案脏读、幻读、不可重复读和丢失更新数据库并发事务存在的问题(脏读、...

网友评论

    本文标题:事务并发的问题和死锁

    本文链接:https://www.haomeiwen.com/subject/fitvwqtx.html