码迷,mamicode.com
首页 > 数据库 > 详细

mysql基础 事务的认识和使用

时间:2015-06-04 22:43:27      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

事务(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基础 事务的认识和使用

标签:

原文地址:http://www.cnblogs.com/z941030/p/4553042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!