1,事务 TCL
一个或者一组sql语句组成一个执行单元,要么全部执行,要么全部不执行。
2,存储引擎
mysql 中有很多存储引擎,比如innodb,myisam,memeory等
其中innodb支持事务
3,事务的ACID特性
原子性:事务不可分割,要么全部执行,要么全部不执行
一致性:事务使数据库数据从一个一致性状态变换到另一个一致性状态
隔离性: 事务之间互不干扰
持久性:事务对数据的改变是永久性的,
4,事务分类
隐式的事务,没有明显的开启关闭命令,比如insert,update等
显示事务,事务具有开启关闭的命令
前提:必须设置自动提交功能为关闭 set autocommit=0,只对该次事务起作用
1,开启事务
start transation
2,编写执行sql语句
3,关闭事务commit
或者回滚 rollback
5,事务的隔离
多个事务出现的问题
脏读:t1事务读到了t2事务修改但是未提交的数据,若t2回滚,则t1读取到的是临时的数据,一般针对更新
不可重复读:t1再次读取的时候,不可以读取到临时的数据。事务不可以重复读取相同的数据
幻读:一般针对插入和删除,在t1读取t2中提交后的表的字段时,t2有向同一个表中插入数据,t2再次读取t2提交后的同一个表的数据时,会和前一次读取的数据个数不同。
隔离级别
mysql支持4种隔离级别,oracle支持两种
msyql默认隔离级别repeattable read 可重复读
读未提交
读已提交:一个事务在提交之前,可以读取到另一个提交的事务,会出现不可重复读的问题,脏读
的问题
可重复读: 一个事务在提交之前,不能读取到另一个提交的事务,所以不会出现不可重复读的问题。
串行化: 事务进行串行化提交
6,保存点 savepoint
rollback to
网友评论