【mysql基础系列十三】事务安全

事务概念

1、什么是事务?

事务(Transaction)是访问并且可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或者编程语言书写的用户程序的执行所引起。事务由“事务开始”和“事务结束”之间的全体操作组成。

2、事务执行原理

mysql允许将书屋统一进行管理(innodb引擎支持),将用户所做的操作,暂时保存起来,不直接方法数据表中(更新操作),等到用户确认结果之后再进行操作。


事务分类

1、自动事务

自动事务(autocommit):当客户端发送一条SQL指令(写操作:增删改)给服务器时,服务器在执行之后,不用等待用户信息反馈结果,会自动将结果同步到数据表。

自动事务验证

原理:启用两个mysql客户端,一个客户端用于执行SQL命令,另一个客户端用于 查看执行结果。

步骤:

    第一步:mysql是默认开启自动事务的。在此状态下,执行插入操作。另一个客户端中可以看到操作结果。


步骤二:关闭自动事务

注意:自动事务本质上是mysql系统做了额外的步骤来帮助用户操作,此步骤通过变量关键字“autocommit”来实现。

show variables like '%autocommit%';  //查看自动事务状态:on表示开启,off表示关闭


set autocomit=off;   //关闭自动事务

步骤三:再次执行插入操作后,当前客户端可看到结果。另一个客户端无法看到执行结果。这是因为系统在进行数据查看时会利用事务日志中保存的结果对数据进行加工。

对比git原理理解:本地代码更改,并执行完了add操作(仅仅是将更该加入了缓存区)。


步骤四:手动同步

注意:一旦自动事务关闭,那么就需要用户提供是否同步的命令:commit(提交,同步到数据表)、rollback(回滚,撤销插入操作),最终该事物会被清空。

commit;   //提交

2、手动事务

手动事务:整个事务从开始到结束都需要用户(程序员)手动发送指令来实现。

手动事务执行步骤

步骤一:开启事务

start transaction;   //开启事务,从这条语句开始,后面的所有语句都不会直接写入到数据表中中,而是保存在事务日志中

步骤二:执行事务,多条写指令构成。

步骤三:设置回滚点(非必须)

当有一系列事务操作时,二其中的步骤如果成功了,没有必要重新来过,可以在某个执行成功的点,设置一个记号(回滚点),然后如果有失败,就可以回到这个记号位置。

注意:在一个事务中可以有多个回滚点,但是如果回到了前面的回滚点,后面的回滚点就失效了。

建立回滚点:

savepoint 回滚点名称; //通常有字母数字和下划线构成

回到回滚点:

rollback 回滚点名称; //该回滚点之后的所有操作清除

步骤四:提交事务/回滚

commit/rollback;   // 提交/回滚

事务特性

事务因具有4个属性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性/永久性(durability / permanence)。

原子性:一个事务是一个不可分割的工作单位,事务中包括的诸多操作要么都做,要么都不做。

一致性:事务必须是使数据库从一个一致性状态转变到另一个一致性状态。与原子性紧密相关。

隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。


隔离级别(行隔离、表隔离。。。):如果条件中使用了索引(通常是主键),那么系统是根据主键直接找到某条记录,这时与其他记录无关,只隔离一条记录;反之,如果是通过未使用索引(如全表检索),被检索的所有数据都会被锁定(整表)。

持久性:一个事务一旦提交,它对数据库中数据的改变是永久的(不能再使用rollback回滚)。即一个事务使用commit;/rollback;之后该事务便会结束消失。除非通过另一个事务操作数据,否则该数据便是永不改变的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值