MySQL 存储过程之事务管理 MySQL 存储过程之事务管理 ACID:Atomic、Consistent、Isolated、Durable 存储程序提供了一个绝佳的机制来定义、封装和管理事务
1,MySQL 的事务支持 MySQL 的事务支持不是绑定在 MySQL 服务器本身,而是与存储引擎相关: Java 代码 MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持 ACID 事务、行级锁、并发 Berkeley DB:支持事务 隔离级别: 隔离级别决定了一个 session 中的事务可能对另一个 session 的影响、并发 session 对数据库的操作、一个 session 中所见数据的一致性 ANSI 标准定义了4个隔离级别,MySQL 的 InnoDB 都支持: Java 代码 READ UNCOMMITTED:最低级别的隔离,通常又称为 dirty read,它允许一个事务读取还没 commit 的数据,这样可能会提高性能,但是 dirty read 可能不是我们想要的 READ COMMITTED:在一个事务中只允许已经 commit 的记录可见,如果 session中 select 还在查询中,另一 session 此时 insert 一条记录,则新添加的数据不可见 REPEATABLE READ:在一个事务开始后,其他 session 对数据库的修改在本事务中不可见,直到本事务commit 或 rollback
在一个事务中重复 select 的结果一样,除非本事务中 update 数据库
SERIALIZABLE:最高级别的隔离,只允许事务串行执行
为了达到此目的,数据库会锁住每行已经读取的记录,其他session 不能修改数据直到前一事务结束,事务commit 或取消时才释放锁
可以使用如下语句设置