0%

MySQL事务

事物的特性

  1. 原子性(Atomicity):事物中的所有数据库操作都执行成功则整个事物之行成功,任何一个操作执行失败则整个事物回退。关注事物执行的状态:要么全成功,要么全失败。
  2. 一致性(consistency):事务不能破坏关系数据的完整性和业务逻辑上的一致性。例如银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款和不变。关注数据的可见性只有最初和最终状态的数据对外可见。
  3. 隔离性(isolation):事务对其他事务的操作互相分离,即该事务提交前对其他事务不可见。
  4. 持久性(durability):事务一旦提交其结果就是永久性的,即使发生系统崩溃,重启数据库后数据库还是可以恢复到事务成功结束时的状态。

事物的隔离级别

  1. 读未提交(read uncommitted):一个事务未提交时所做的改动可以被另一个事务看到。
  2. 读提交(read committed):一个事务提交之后他所作的改动才能被其他事务看到。
  3. 可重复读(repeatable read):一个事务执行过程中的数据和它启动时的数据一致的,且未提交的变更对其他事务也是不可见的。
  4. 串行化(serializable):对同一条数据写操作会加“写锁”读操作会加“读锁”,当读写冲突时后来的事务要等先来的事务执行完才能继续执行。

配置方式

修改启动参数transaction-isolation

1
2
3
[mysqld]
transaction-isolation = REPEATABLE-READ
##k可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE