TCL语句(二) -- 事务

一、含义

  事务:一条或多条 sql 语句组成一个执行单位,一组 sql 语句要么都执行要么都不执行

 

二、特点(ACID 属性)

  A.原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么 都发生,要么都不发生。

  C.一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态 。

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

  D.持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是 永久性的,接下来的其他操作和数据库故障不应该对其有任何影 响

 

三、事务的使用步骤★

隐式(自动)事务:没有明显的开始和结束,本身就是一条事务可以自动提交,比如 insert、update、delete;

显式事务:具有明显的开始和结束

 

使用显式事务

① 开启事务

SET autocommit=0;

START TRANSACTION;

② 编写一组逻辑 sql 语句

注意:sql 语句支持的是 insert、update、delete

 

设置回滚点:

SAVEPOINT回滚点名;

③ 结束事务
提交事务:COMMIT;
回滚事务:ROLLBACK;

回滚到指定的地方:ROLLBACK TO 回滚点名;

 

四、并发事务

1、事务的并发问题是如何发生的?

  多个事务 同时操作 同一个数据可的相同数据

2、并发问题有哪些?

  脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务“更新”的数据

  不可重复读:一个事务多次读取,结果不一样

  幻读:一个事务读取了其他事务还没有提交的数据,只是读到的是其他事务“插入”的数据

3、如何解决并发问题

  通过设置隔离级别解决并发问题

4、隔离级别

                    脏读      不可重复读      幻读

  read uncommitted:读未提交      √        √         √ 
  read committed:读已提交       ×        √         √
  repeatable read:可重复度       ×        ×         √
  serializable:串行化          ×        ×         ×

posted @ 2018-06-23 21:11  昱晟  阅读(431)  评论(0编辑  收藏  举报