MySQL事务

内容纲要

一、引入

为了对MySQL事务加强认知和记忆,编写了此文作为信息收集和汇总。

二、事务定位

通过阅读MySQL 8.0 Reference Manual,搜索transaction,发现分布如下:

1、第一处

  • 8.5 Optimizing for InnoDB Tables
    • 8.5.2 Optimizing InnoDB Transaction Management
    • 8.5.3 Optimizing InnoDB Read-Only Transactions

分别是

  • 优化InnoDb事务管理
  • 优化InnoDB只读事务。

2、第二处

  • 12.18 Replication Functions
    • 12.18.2 Functions Used with Global Transaction Identifiers (GTIDs)

这是MySQL官方文档中关于复制功能的一个章节,其中12.18.2小节介绍了与全局事务标识符(GTID)一起使用的函数。

3、第三处

  • 13.3 Transactional and Locking Statements
    • 13.3.1 START TRANSACTION, COMMIT, and ROLLBACK Statements
    • 13.3.2 Statements That Cannot Be Rolled Back
    • 13.3.3 Statements That Cause an Implicit Commit
    • 13.3.4 SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT Statements
    • 13.3.5 LOCK INSTANCE FOR BACKUP and UNLOCK INSTANCE Statements
    • 13.3.6 LOCK TABLES and UNLOCK TABLES Statements
    • 13.3.7 SET TRANSACTION Statement
    • 13.3.8 XA Transactions

整个第13章节,是MySQL数据库文档中关于事务处理和锁的内容:

  • 13.3 介绍了与事务处理和数据库锁定相关的不同SQL语句和操作。
    • 13.3.1 解释了如何开始、提交和回滚事务,这是管理事务的基本SQL语句。
    • 13.3.2 列出了一些特定的SQL语句和操作,它们不能被回滚,即无法撤销其效果。
    • 13.3.3 讨论了一些SQL语句和操作,它们会触发隐式提交,将当前事务的更改永久保存到数据库。
    • 13.3.4 介绍了使用SAVEPOINT来创建保存点,以及如何回滚到指定的保存点或释放保存点的SQL语句。
    • 13.3.5 解释了用于备份目的的数据库实例锁定和解锁操作的SQL语句。
    • 13.3.6 介绍了用于锁定和解锁数据库表以实现并发控制的SQL语句。
    • 13.3.7 讨论了使用SET TRANSACTION来设置事务的属性和参数的SQL语句。
    • 13.3.8 可能包括关于XA事务的信息,XA是一种用于管理分布式事务的协议。

这些章节涵盖了MySQL数据库中的事务处理和锁定操作的各个方面,包括了如何启动、提交、回滚事务,哪些语句无法回滚,以及哪些语句会导致隐式提交。还介绍了如何使用保存点(SAVEPOINT)、锁定数据库实例和表以及设置事务属性等内容。最后,还提及了与分布式事务相关的XA事务。这些章节对于管理和控制数据库操作的一致性和并发性非常重要。

4、第四处

  • 14 MySQL Data Dictionary
    • 14.3 Transactional Storage of Dictionary Data

MySQL数据字典,讲的是字典数据的事务存储。

在MySQL数据库文档中,第14章 "MySQL Data Dictionary"(MySQL数据字典)探讨了MySQL数据库内部用于存储和管理数据库对象(如表、索引、列等)元数据信息的数据字典。具体来说,14.3小节 "Transactional Storage of Dictionary Data"(字典数据的事务性存储)讨论了如何使用事务来存储和维护MySQL数据字典中的数据,以确保数据的一致性和完整性。这一小节提供了有关MySQL数据字典的事务性存储的详细信息。

5、第五处

  • 15.7 InnoDB Locking and Transaction Model .
    • 15.7.1 InnoDB Locking
    • 15.7.2 InnoDB Transaction Model.
    • 15.7.3 Locks Set by Different SQL Statements in InnoDB
    • 15.7.4 Phantom Rows
    • 15.7.5 Deadlocks in InnoDB
    • 15.7.6 Transaction Scheduling

讲的是InnoDB锁和事务模型。
其中包括:

  • InnoDB 锁
  • InnoDB 事务模型
  • 在InnoDB中的不同SQL语句的锁集合
  • "Phantom Rows" 是一个数据库领域中的术语,通常用来描述在某些事务隔离级别下的并发操作中出现的现象。Phantom Rows(幻影行)指的是在某个事务中查询出现不同结果的情况。
  • InnoDB中的死锁
  • 事务调度

6、第六处

  • 15.15 InnoDB INFORMATION_SCHEMA Tables
    • 15.15.2 InnoDB INFORMATION_SCHEMA Transaction and Locking Information

InnoDB INFORMATION_SCHEMA表,事务和锁信息。

7、第七处

  • 17 Replication
    • 17.1 Configuring Replication
      • 17.1.3 Replication with Global Transaction Identifiers

在MySQL数据库文档中,第17章 "Replication"(复制)包含了配置和管理复制的信息。17.1节 "Configuring Replication"(配置复制)详细介绍了如何配置MySQL数据库的复制功能,而17.1.3小节 "Replication with Global Transaction Identifiers"(使用全局事务标识符的复制)则专门讨论了如何配置和使用全局事务标识符(GTID)来管理和跟踪复制中的事务,以确保数据同步和一致性。这一小节提供了有关使用GTID的配置和操作的信息。

8、第八处

  • 18.5 Group Replication Operations.
    • 18.5.3 Transaction Consistency Guarantees
      18.5 Group Replication Operations(组复制操作)章节中,18.5.3小节探讨了有关事务一致性保证的内容,详细讨论了MySQL组复制中与事务处理相关的保证和操作。

9、第九处

  • 27.12 Performance Schema Table Descriptions
    • 27.12.7 Performance Schema Transaction Tables

27.12 Performance Schema Table Descriptions(性能模式表描述)章节中,27.12.7小节涵盖了有关性能模式中与事务相关的表的详细描述和信息。

三、学习路线

3.1 Step1 - 基础理论和概念

  • 1、事务的基本理念:

    • 阅读 第13章节 (13.3 Transactional and Locking Statements) 来理解事务的基本概念、特性(ACID:原子性、一致性、隔离性、持久性)及基础命令(START TRANSACTION, COMMIT, ROLLBACK)。
  • 2、InnoDB事务模型:

    • 研读 第15.7节 (15.7 InnoDB Locking and Transaction Model),深入了解InnoDB的事务模型和锁机制。

3.2 Step2 - 高级特性和优化

  • 1、事务的优化和管理:

    • 阅读 第8.5.2小节 (Optimizing InnoDB Transaction Management) 和 第8.5.3小节 (Optimizing InnoDB Read-Only Transactions) 来学习事务的优化技巧。
  • 2、事务的高级操作:

    • 阅读 第13.3.2至13.3.8小节,深入理解不能回滚的语句、隐式提交、SAVEPOINT操作、XA事务等高级特性。

3.3 Step3 - 特殊场景处理

  • 1、死锁和幻读处理:

    • 研究 第15.7.4小节 (Phantom Rows) 和 第15.7.5小节 (Deadlocks in InnoDB) 来理解和处理死锁和幻读的问题。
  • 2、事务调度:

    • 阅读 第15.7.6小节 (Transaction Scheduling) 了解事务在系统中的调度和处理。

3.4 Step4 - 数据字典和性能

  • 1、数据字典的事务性存储:

    • 了解 第14.3小节 (Transactional Storage of Dictionary Data) 中数据字典的事务性存储。
  • 2、性能模式表:

    • 阅读 第27.12.7小节 (Performance Schema Transaction Tables) 学习如何使用性能模式监控事务性能。

3.5 Step5 - 复制和一致性

  • 1、复制中的事务处理:
    • 深入研究 第17.1.3小节 (Replication with GTIDs) 和 第18.5.3小节 (Transaction Consistency Guarantees) 来了解在复制环境中事务的一致性和跟踪。

3.6 Step6 -实践和应用

  • 1、实践练习:
    • 创建实验环境,执行不同事务操作,模拟死锁、幻读等场景,并实践解决方案。
    • 使用性能模式表监控事务性能,优化事务处理。
  • 2、案例研究:
    • 查找并分析实际案例,了解事务处理在真实环境中的应用和问题。
  • 3、面试准备:
    • 准备面试常问的事务处理问题,如事务的隔离级别、死锁处理、性能优化等。

四、Step1 - 基础理论和概念

MySQL事务 – Step1 – 基础理论和概念

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward