您的位置:首页 > 数据库 > MySQL

mysql基础 事务的认识和使用

2015-06-04 21:26 441 查看
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。

在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性:

原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

如果不考虑事务的隔离级别,会出现以下“不正确”的情况:

1. 脏读:指一个事务读到了另一个事务中未提交的数据。

2. 不可重复读:针对一条记录的,同一条记录前后不一样

3. 虚读(幻读):针对一张表,前后读到的记录条数不一样。

隔离级别的分类:

READ UNCOMMITTED:脏读、不可重复读、虚读都有可能发生。

READ COMMITTED:能避免脏读。不可重复读、虚读都有可能发生。

REPEATABLE READ:能避免脏读、不可重复度。虚读有可能发生。

SERIALIZABLE:能避免脏读、不可重复度、虚读。

mysql中控制事务隔离级别的语句:

select @@tx_isolation; //查看当前的事务隔离级别

set transaction isolation level 你的级别(上述四种之一); //设置隔离级别

mysql中默认级别为 REPEATABLE
READ

mysql事务控制语句:

默认情况下一条语句为一个事务,无需手动开启。事务控制语句如下
start transaction:开启一次事务

rollback:回滚

commit:提交事务

博客园博文地址:mysql基础 事务的认识和使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: