码迷,mamicode.com
首页 > 其他好文 > 详细

TCL语句(二) -- 事务

时间:2018-06-23 22:55:54      阅读:359      评论:0      收藏:0      [点我收藏+]

标签:多个   接下来   epo   自动提交   action   开启   串行化   tar   问题   

一、含义

  事务:一条或多条 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:串行化          ×        ×         ×

TCL语句(二) -- 事务

标签:多个   接下来   epo   自动提交   action   开启   串行化   tar   问题   

原文地址:https://www.cnblogs.com/xifengbuqi/p/9218891.html

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