事务

方法1

设置手动提交事务

set @@autocommit = 0;

接下来每运行一次sql语句,需要输入commit;

如果出错可以使用rollback;

方法二

使用

start tranction 或者 begin

事务的ACID

  • 原子性(Atomicity)。一个事务要么完全执行,要么不执行

  • 一致性(Consistency)事务完成时,必须使所有的数据都保持一致状态

  • 隔离性(Isolation)事务在不受外部并发操作影响的独立环境下运行

  • 持久性(Durability)

并发事务问题

  • 脏读。一个事务读到另外一个事务还没有提交的数据

  • 不可重复读。一个事务先后读取同一个记录,但是两次读取的数据不同

  • 幻读。一个事务在查询时没有对应数据,但是在插入时数据已经存在,好像出现了幻影

并发事务隔离级别

  • Read uncommitted。1 1 1

    • 读未提交

  • Read committed. 0 1 1

    • 读已提交

  • Repeatable Read (Mysql default)0 0 1

    • 可重复读

  • Serializable. 0 0 0

    • 串行化

最后更新于

这有帮助吗?