MySQL——InnoDB事务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
事务:全部成功 或 全部失败!
----------------------------------------------------------------------------------------------
 
1、原子性:全部成功或全部取消。
 
2、一致性:如果数据库在事务开始时处于一致状态,则在执行该事物期间将保留一致状态。
 
3、隔离性:事物之间不相互影响。
 
4、持久性:事务成功完成后,所做的所有改变将准确地记录在数据库中,所做的更改不会丢失。
 
----------------------------------------------------------------------------------------------
 
 
 
5、事务SQL控制语句:
        ----MySQL5.5之后默认自动提交模式,不需要begin或start transaction语句,默认开启autocommit模式。
 
        ----可以通过以下命令修改关闭(0是关闭,1是开启):
 
                (1)临时生效:
                    SET GLOBAL AUTOCOMMIT=0; ---- 所有新建会话
                    SET SESSION AUTOCOMMIT=0; ---- 当前会话
                    SELECT @@AUTOCOMMIT; ---- 查看设置结果
 
                (2)永久生效:
                    vim /etc/my.cnf
 
                    [mysqld]
                    AUTOCOMMIT=0
 
        ----标记:
                事务开始:begin  / start transaction
                        MySQL5.5之后,自动开启“开始”,不需要手工录入
 
                事务结束:commit
 
                事务撤销(回滚):rollback
 
 
 
6、导致事务提交的非SQL事务控制语句(隐式提交):
                DDL: alter  /  create  /  drop ...
 
                DCL: grant  /  revoke  /  set password ...
                 
                锁定语句: lock tables / unlock tables ...
 
 
7、事务日志redo
    redo: 重做日志,事务日志的一种。
        (1)记录内存页的变化。
        (2)是为了提高数据持久化的一种特性。
 
        (4)redo工作原理:   
                    MySQL在对数据进行修改的时候,是在内存中进行的,提交后才会写到磁盘中,
                    同时在修改数据的过程中,redo会在数据修改的过程中,对更改信息定时写到磁盘
                    中,但是如果事务执行失败,redo会重做日志,将磁盘更改信息恢复到修改之前。
 
8、事务日志undo
    undo:回滚日志,事务日志的一种。
 
        (1)undo工作原理:   
                    MySQL在对数据进行修改的时候,是在内存中进行的,提交后才会写到磁盘中,
                    在开始修改之前undo会对当前的状态进行“拍照”,同时undo会在数据修改
                    的过程中,对更改信息定时写到磁盘中,但是如果事务执行失败,undo会用
                    之前的“照片”覆盖更改信息,将磁盘更改信息恢复到修改之前。
 
 
9、LSN(redo/undo中)
    LSN:日志版本号、或叫日志序列号
 
 
10、事务中的锁(锁定)(性能高于MyISAM)(高并发锁:行级锁---->可以只锁一行)
    四种隔离级别:
            ----READ UNCOMMITTED
                允许事务查看其它事务所进行的未提交更改
 
            ----READ COMMITTED
                允许事务查看其它事务所进行的已提交更改
 
            ----REPEATABLE READ***
                确保每个事务的 SELECT 输出一致
                InnoDB的默认级别
 
            ----SERIALIZABLE
                将一个事务的结果与其它事务完全隔离

  

posted @   映辉  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示