• mysql事务学习笔记


    一.基础概念

    事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。

    1.逻辑架构和存储引擎

    (1)第一层:处理客户端连接、授权认证等。

    (2)第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。

    (3)第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储引擎实现的。

    2.提交和回滚

    (1)commit提交事务,将执行结果写入到数据库。如果sql语句执行出现问题,会调用rollback,回滚所有已经执行成功的sql语句。

    (2)在自动提交模式下,如果没有start transaction显式地开始一个事务,那么每个sql语句都会被当做一个事务执行提交操作。

    (3)在MySQL中,存在一些特殊的命令,如果在事务中执行了这些命令,会马上强制执行commit提交事务;如DDL语句(create table/drop table/alter/table)、lock tables语句等等。

    3.ACID特性

    原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

    二.原子性

    1.原子性说明事务为一个完整的整体,其中的多个sql语句中若有一个出现问题,则事务回滚,将已经执行完成的sql语句所处理的数据恢复原状。

    2.事务回滚是以回滚日志中的信息为标准进行的

    三.持久性

    1.当事务提交以后,事务对数据库的操作便是永久生效的,通俗来说就是这件事已经做完了有了结果。

    2.当数据修改时,会将信息记录到重做日志中,之后记录到缓存,缓存数据定期写入磁盘

    四.隔离性

    1.事务之间互相不干扰,互为一个独立的整体

    2.事务隔离级别:读未提交、读已提交、可重复读、可串行化

    五.一致性

    1.一致性是指事务执行结束后,数据库的完整性约束没有被破坏,事务执行的前后都是合法的数据状态。

    2.一致性是事务追求的最终目标:前面提到的原子性、持久性和隔离性,都是为了保证数据库状态的一致性。此外,除了数据库层面的保障,一致性的实现也需要应用层面进行保障。

    六.事物的七大传播机制

    1.PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。

    2.PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

    3.PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。

    4.PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

    5.PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

    6.PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

    7.PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。


    参考博客地址:https://www.cnblogs.com/kismetv/p/10331633.html

  • 相关阅读:
    [Python] Read and Parse Files in Python
    [React] Write Compound Components
    [Python] Reuse Code in Multiple Projects with Python Modules
    [Parcel] Bundle a React App with Parcel
    [Javascript] Specify this using .call() or .apply()
    [Javascript] this in Function Calls
    [Python] Create a Log for your Python application
    [Python] Create Unique Unordered Collections in Python with Set
    [Python] Manipulate Data with Dictionaries in Python
    SVN:常用命令
  • 原文地址:https://www.cnblogs.com/mqlblog/p/14280604.html
Copyright © 2020-2023  润新知