当前位置:Gxlcms > 数据库问题 > Mysql事务,并发问题,锁机制

Mysql事务,并发问题,锁机制

时间:2021-07-01 10:21:17 帮助过:18人阅读

from user;   rollback 回滚到事务起点 savepoint dele;     savepoint 保留回滚位置 **** rollback dele;    rollback point_name 回滚到设置的位置 commit;        

使用注意点

    如果事务中sql正确运行,后面没有commit,结果是不会更新到数据库的,所以需要手动添加commit。
    如果事务中部分sql语句出现错误,那么错误语句后面不会执行。而我们可能会认为正确操作会回滚撤销,但是实际上并没有撤销正确的操作,此时如果再无错情况下进行一次commit,之前的正确操作会生效,数据库会进行更新。

InnoDB引擎的锁机制

(之所以以InnoDB为主介绍锁,是因为InnoDB支持事务,支持行锁和表锁用的比较多,Myisam不支持事务,只支持表锁)
  共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。
  排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。
  意向共享锁(IS):事务打算给数据行加行共享锁,事务在给一个数据行加共享锁前必须先取得该表的IS锁。
  意向排他锁(IX):事务打算给数据行加行排他锁,事务在给一个数据行加排他锁前必须先取得该表的IX锁。
说明:
  1)共享锁和排他锁都是行锁,意向锁都是表锁,应用中我们只会使用到共享锁和排他锁,意向锁是mysql内部使用的,不需要用户干预。
  2)对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁(X);对于普通SELECT语句,InnoDB不会加任何锁,事务可以通过以下语句显示给记录集加共享锁或排他锁。
  共享锁(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE。
  排他锁(X):SELECT * FROM table_name WHERE ... FOR UPDATE。
  3)InnoDB行锁是通过给索引上的索引项加锁来实现的,因此InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!。

来源:www.cnblogs.com/-new/p/7239456.html

来源:www.cnblogs.com/fidelQuan/p/4549068.html

Mysql事务,并发问题,锁机制

标签:sha   date   inno   操作   级别   let   业务逻辑   开始   表锁   

人气教程排行