Mysql事物处理

来源:互联网 发布:淘宝武汉飞鱼运动 编辑:程序博客网 时间:2024/05/01 18:48

事物操作

需求:在银行,所有用户都有一个账户信息,假设两个用户之间转账,一方减少必定要另外一方增加

假设:在操作过程,只有一条信息被更新成功,另外一条信息更新失败(没有更新)

 

事物处理指的是当一组事物进行时,必须要满足全部条件才能算执行成功,任何一个执行失败都将导致整个的事物操作失败。

 

SQL语句是以行为单位执行,所以一个事物,往往是多条SQL语句需要执行

 

创建银行用户数据表

 

 

事物操作如下

1.    开启事物

语法:start/begin transaction;

2.    先执行一条SQL语句,但是该记录并不直接

3.    再执行其他SQL语句

4.    如果全部执行成功,再进行数据同步(把数据写入到数据库),如果有一个步骤失败,所以的操作全部放弃

a)    成功语法:commit

b)   失败语法:rollback

 

事务处理(rollback)

 

在事务执行过程中,执行事物的客服端得到的数据经过SQL日志处理过的数据

 

事务没有处理完毕,数据源的数据永远没有改变,所以得到的结果永远都不变

 

Rollback 失败处理,最终清除日志文件里的事务信息,不需要写入到数据库

 

事务处理(Commit)

 

提交事务,成功处理,将日志文件里的事务信息写入到数据库

 

系统中默认是采用非事物模式进行数据操作,在系统中有一个变量记录数据操作的方式

 

只要修改autocommit = off就可以改变系统对事物处理模式

 

 

通常,操作过程中不关闭事物的自动提交,因为普通的数据操作,没有那么高的安全性要求.

 

事物特点

原子性:Atomicity,一个事物是一个整体,要么全部成功,要么全部失败

一致性:consistency,在数据操作的前后,数据库的数据没有被改变,直到事物提交

隔离性:isolation,在事物处理的过程中,其他的客服端数据的操作不受影响(主要指查看)

如果在一个事物正在处理的时候,另外一个客服端,对同一条正在事物中处理的数据进行更新的时候,那么需要等待事物的提交之后才能执行持久性。

持久性:事物一旦提交,那么整个修改不可逆转

 

事物使用?

一般比较少用,一般跟钱相关的时候,会使用到事物处理来保证数据安全

0 0