MySQL事务.

什么是事务
MySQL事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你就需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
    事务是一个事件处理的完整的过程。比如:存款,取款,转账等操作都可以称之为一个事务。

事务的应用场景
我们想完成一次转账业务,那么他会多次去访问我们的数据库。转账实上就是从一个账户扣钱欧安,在往一个账户上加钱。这样我们执行了二次sql,如果其中一个sql失败,那么整个业务失败

mysql中有两种事务提交方式:
手动提交
自动提交

手动提交的过程:开启事务---执行多条件SQL语句---成功---事务提交 0
                            |----失败---事务回滚

事务执行成功的过程:开启事务->执行多条件SQL语句->成功->事务提交
事务执行失败的过程:开启事务->执行多条件SQL语句->失败->事务回滚

事务自动提交
0000001MySQL默认每一条DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕自动提交事务,MySQL默认开始自动提交事务。
事务开始->update/delete/insert into->事务提交

事务原理
一个事务会涉及到大量的CPU计算和操作,这些操作被打包成一个执行单元,要么同时都完成,要么同时都不完成。

自动提交原理图
如果没有显示启动事务,数据库会根据auto commit 的值,默认每条sql操作都会自动提交

Client---请求连接---Server-身份认证,建立连接对当前用户,开启临时事务日志 
    |---写SQL---接收SQL -执行SQL,将结果直接写入数据库表---同步DB-DB

手动提交原理图
如果开启了事务,其中有任何一条语句因为崩溃或其他原因无法执行,那么该组中所有的sql语句都不会执行。

Client---请求连接---Server-身份认证,建立连接对当前用户,开启临时事务日志
|--开启事务---改变原操作机制
|--写SQL---接收SQL执行SQL,将结果写入临时日志文件--临时日志文件:(断开连接临时文件清空)SQL操作结果--提交-DB
|--SQL操作结果--查询结果:从数据库表查询,经过临时日志文件加工返回
|--事务提交或回滚--清空临时文件: 提交:同步到数据库表 回滚:直接清空

事务提交步骤
    客户端连接上服务器端,创建链接同时创建连接同时创建当前用户的临时事务日志文件。
    开启事务,改变原有的操作机制(所有的操作都会陷入临时日志文件)。
    写入SQL,接受并执行SQL,所有的SQL操作都会写入临时文件;返回数据时,从数据库表拿去数据,但要通过临时日志文件加工在返回。
    事务的提交或回滚,提交:同步临时日志文件中的SQL操作结果到数据库表;回滚:清除临时文件

事务回滚
    我们可以在mysql事务处理过程中定义保存点(save point),然后回滚到指定的保存点前的状态。
注意:设置保存点可以让我们在失败的时候回到保存点,而不是回到事务开启的时候。

事务隔离级别
    事务特性
        原⼦性( Atomicity ): 事务内的操作要嘛全部完成,要嘛全
            部回滚。
        ⼀致性 (Consistency) : 事务执⾏的前后都是合法的数据状
            态,不会违反任何的数据完整性。
        隔离性( Isolation ) : 主要是事务之间的相互的影响,根据隔
            离有不同的影响效果。
        持久性( Durability ): 事务⼀旦提交,就会体现在数据库
            上,不能回滚。
事务的并发问题
    脏读: ⽐如事务 A 执⾏的过程中,读到了事务 B 未提交的内
        容。
    不可重复读: 指⼀个事务在前后两次查询的结果不⼀致。
    幻读: 幻读是指前后两次相同条件下的查询,后⼀次查询读到
        了前⼀次查询没有的⾏数据。
                           

手动提交的过程:开启事务---执行多条件SQL语句---成功---事务提交 
                            |----失败---事务回滚

事务执行成功的过程:开启事务->执行多条件SQL语句->成功->事务提交
事务执行失败的过程:开启事务->执行多条件SQL语句->失败->事务回滚

事务自动提交
MySQL默认每一条DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕自动提交事务,MySQL默认开始自动提交事务。
事务开始->update/delete/insert into->事务提交

脏读
    脏读是⽐较危险的事情,如果张三在李四那⾥买了⼀个汽球花
    了 500 元,那么张三转帐给李四后,李四发货给张三,张三收
    到货物后把事务回滚,这样李四再也没有看到钱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值