详解MySQL之事务

事务

  事务的组成可由一条非常简单的SQL语句组成,也可由一组复杂的SQL语句组成。

特征

  事务具有以下特征:  

  (1)在数据提交时,可以确保要么所有修改都已保存,要么所有修改不保存;

  (2)事务是访问并更新数据库各种数据项的一个执行单元;

  (3)在innodb下,每一条语句都是事务,可以通过set autocommit = 0 (默认值1,不需要手动添加开始事务和提交语句),设置当前会话手动提交,一般需要执行多条语句的时候,就会显式地开始事务。

指令

        -- 显示开启事务
         BEGIN
        -- 提交事务,并使得已对数据库做的所有修改持久化
        COMMIT
        -- 回滚事务,结束用户的事务,并撤销正在进行的所有未提交的修改
        ROLLBACK
        -- 创建一个保存点,一个事务可以有多个保存点
        SAVEPOINT identifier
        -- 删除一个保存点
        RELEASE SAVEPOINT identifier
        -- 事务回滚到保存点
        ROLLBACK TO [SAVEPOINT] identifier

事务的ACID特性

  (1)原子性

    a. 事务要么都做(提交),要么都不做(回滚);

    b.事务是访问并更新数据库各种数据的执行单元,执行单元是不可分割的单位;

    c.通过undolog来实现回滚(语句的操作都会记录在undolog中),当回滚时,回放事务具体操作的逆运算

  (2)隔离性

    a.mysql在处理每一个连接的请求是并发的,所以需要隔离性;

    b.事务的隔离性要求每个读写事务对象对其他事务的操作对象能互相分离,也就是事务提交前对其他事务不可见

    c.通过MVCC和锁来实现,MVCC是多版本并发控制,主要解决一致性非锁定读,通过记录和获取行版本,而不是通过锁来限制读操作,从而实现高并发读性能;

    d.通过锁来处理数据库的DML操作,数据库提供了针对表(聚集索引B+树)、页(聚集索引B+树的叶子节点)、行(叶子节点当中某一段记录行)等三种粒度加锁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值