Mysql事务的处理

1、事务,就是一组命令的操作。

        不过这一组命令,我们有时候需要使用手动提交;

1、使用这组命令可以查询出来现在的提交方式:自动提交(就是命令输入,点击enter后,会不会直接对表格产生修改,改为0以后,就需要额外使用一个commit命令才能将命令提交执行);

                          

                        

2、执行出错的时候,

        使用回滚事务操作,将数据改为原来的状态

        rollback;  

3、事务的性质(ACID,网上很多,先不写了,就是针对的一组事务命令)

4、并发事务问题:

(多个事务并发操作同一数据库时,每个事务在使用时,都对数据库进行操作,进行修改后,可能影响其他事务对数据库的访问。类似多线程对共享资源的访问),说是三种问题,实际上使用的时候,对应的是三种操作

(第一种对应的是,当前事务进行读取的时候,另外一个事务对数据表进行了修改,但是另外一个事务还没有执行到提交的那一步。这个过程里第一个事务读取到了,成为脏读)

(第二种对应,使用一个事务先后两次读取同一个记录,另外的事务在两次读取之间对数据进行了修改,导致读取到的信息不一样)

(第三种对应,使用一个事务向表格插入数据前,先查询一下,里面没有目标数据;但是后面执行insert into 插入命令时,表格中已经有了我们要插入的数据,但是使用select 查询命令时仍然查不到,也插入不了,考虑先提交当前事务看看,可能就有了。这样的重点在插入操作)

这些问题的共性,一般都是在一个事务未完成的时候,下一个事务就介入当前事务所用的表格,所以需要注意下。

幻读:

4、事务隔离级别(X号表示隔离级别可以解决的问题)

 隔离越厉害性能越差。最后一种是串行访问,当前事务未处理完之前,其他事务的命令无法执行

 1、设置隔离级别为 serializable 时,第一张图是在其中一个事务中进行更新数据,第二个是在第一个更新完没有提交的时候,就卡在那里了。

                

                

此时信息已经更新了

        ​​​​​​​        ​​​​​​​        

当提交后:当前事务中是这样的,另外一个事务中报了超时错误(可能时间间隔长了)

        

        

5、事务的结束和重新开始 

        开始可以使用 begin和start transaction;当提交后,当前事务就算结束了。这个没有找到类似的资料。

不过处理过程中,不要让事务中使用的命令超时,超时的话,可能系统会自己重新开始事务,以免出现不必要的麻烦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值