数据库的事务处理

1 事务处理, 通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性。

事务(transaction)指一组SQL语句

回退(rollback)指撤销指定SQL语句的过程

提交(commit)指将未存储的SQL语句结果写入数据库表

保留点(savepoint)指事务处理中设置的临时占位符(placeholder)

事务处理可以回退INSERT, UPDATE, DELETE;不能回退SELECT, CREATE和DROP


2 在MySql中,开启一次事务

START TRANSACTION

......

COMMIT TRANSACTION


3 事务的四个特性:

1)(atomic)原子性:事务中的SQL操作要么完全执行,要么完全不执行;

2)(consistency)一致性:事务完成时,数据必须处于一致状态,数据的完整性约束没有被破坏,如果在事务的执行过程中发生错误,会回滚(rollback)到事务开始前的状态。

3)(isolation)隔离性:事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改保持独立。

4)(durability)持久性:事务一旦提交,就应该被永久的保存下来。

MySQL中控制事务隔离级别的语句:
select @@tx_isolation; //查看当前的事务隔离级别
set transaction isolation level 你的级别(四种之一);//设置隔离级别

隔离级别的分类:
READ UNCOMMITTED(未授权读):脏读、不可重复读、虚读都有可能发生。
READ COMMITTED(授权读):能避免脏读,不可重复读、虚读都有可能发生。
REPEATABLE READ(可重复读):能避免脏读、不可重复度,虚读都有可能发生。
SERIALIZABLE(序列化):能避免脏读、不可重复度、虚读。

4事务的并发性

来自(http://blog.csdn.net/zdplife/article/details/48032141)

一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库。数据库中的相同数据可能同时被多个事务访问,如果没有采取必要的隔离措施,就会导致各种并发问题,破坏数据的完整性。这些问题可以归结为5类,包括3类数据读问题(脏读、幻象读和不可重复读)以及2类数据更新问题(第一类丢失更新和第二类丢失更新)。

① 脏读:A事务读取B事务尚未提交的更改数据

② 不可重复读:A事务读取了B事务已经提交的数据,导致两次读不一致

③ 幻想读:A事务读取了B事务新增的数据,幻象读和不可重复读是两个容易混淆 的概念,前者是指读到了其它已经提交事务的新增数据,而后者是指读到了已经提交事 务的更改数据(更改或删除)

④ 第一类丢失更新:A事务撤销时,把已经提交的B事务的更新数据覆盖了

⑤ 第二类丢失更新:A事务提交时覆盖了B事务提交的数据

5 事务的日志

主要记录对数据库的更新操作,包括增加,删除和修改。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值