美文网首页
MySQL--事务

MySQL--事务

作者: 一步一看 | 来源:发表于2018-12-20 11:28 被阅读0次

    基本原理(必须是INNODB存储引擎):将用户所做操作暂时保存起来,不直接存到数据表,等到用户确认结果之后,再执行操作。

    事务处理图解

    事务在mysql重通常是自动提交的,但是也可以手动事务

    自动事务(autocommit)

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

    可以同构哦autocommit

    show variable like 'autocommit'

    关闭之后就不会帮助用户自动提交了:set autocommit off。

    一旦关闭,需要提供是否同步的命令

    commit: 提交

    rollback:回滚,清空之前的操作

    通常不会关闭自动事务,只会在需要使用的时候才会进行操作。

    手动事务

    命令:

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

    事务处理:多个写指令构成

    事务提交:commit/rollback,到这个时候事务才结束。

    开启事务:start transaction;

    执行事务:

    将多个连续但是一个整体的sql指令逐一执行

    将多个事务同时执行

    提交事务:

    确认提交:commit

    回滚操作:rollback;

    回滚点(savepoint):

    当有一系列事务操作是,其中步骤成功了,不需要重新来过,就可以设置回滚蒂娜,后面如果失败,可以回滚到记号位置

    增加回滚点:savepoint 回滚点名字;//字母和下滑线构成

    回到回滚点:rollback to  回滚点名字; //回滚点之后的操作就没有了

    注意,在一个事务处理中,有很多步骤,可以设置多个回滚点,但是如果回到前面的回滚点,后面的回滚点就失效。

        事务特点:

    原子性(atomicity):事务是一个不可分割的工作单位,事务中包括的诸多操作要么不做,要么都做,事务从start transaction起到提交事务(commit|rollback)要么成功,要么失败

    一致性(consistency):事务必须是使数据库从一个一直行状态,变到另一个一致性状态,一致性与原子性是密切相关的。数据表中的数据修改,要么一次性修改,要么不变。

    隔离性(isolation):一个事务的执行不能被其他事务干扰。即:一个事务内部操作及使用 的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。如果一个客户端,在使用事务操作一个数据(可能是一行/整个表)的时候,另一个客户端不能对该数据进行操作

    如果条件中使用了索引(主键)那么系统是根据主键直接找到某条记录,这时候,与其他记录无关,只隔离一条数据,如果没有索引,系统是通过全表索引(每一条记录都会去检查被检索的所有数据都会被锁定(整表)

    持久性(durability)/永久性(permanence):指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来其他操作或故障不应该对其有影响(commit之后,所有操作不可返回)

    隔离性例子

    相关文章

      网友评论

          本文标题:MySQL--事务

          本文链接:https://www.haomeiwen.com/subject/wswekqtx.html