mysql基础(六)mysql事务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:
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
mysql事务:是一个独立的工作单元
 
事务必须通过ACID测试:
    原子性(Atomicity):一个事务的所有操作要么全部成功执行,要么全部失败后回滚
    一致性(Consistency):数据库总是从一个一致性状态转换成另一个状态
    隔离性(Isolation):一个事务在做出的操作在提交之前,其他事务是不可见的,隔离有多种级别
    持久性(Durability):一旦事务提交,其所做出的操作将永久保存在数据库中
 
事务的执行流程:
    启动事务-->执行SQL语句-->提交事务-->保存数据
    启动事务-->执行SQL语句-->回滚-->数据不发生任何改变
     
     
     
事务的隔离级别:
    Read Uncommitted(读取未提交内容)
    出现问题:123      #不建议使用此隔离级别
    Read Committed(读提交)
    出现问题:23            #大多数数据库使用的隔离级别,性能较好
    Repeatable Read(不可重复读)
        出现问题:3          #mysql默认使用的隔离级别
    Serializable(串行化)        #数据安全性最好,并发访问能力最弱,可能会出现死锁,
        出现问题:4      除非在数据要求比较严格的情况下,否则不建议使用
          
出现问题:
    1、脏读:可以读取其他事务没有提交的数据
    2、不可重复读:在当前事务中没有做出任何修改,但使用select查看数据时可能查看到不同的数
    3、幻读:在当前事务提交之前只能看见启动事务时的数据和在当前事务中做出修改的数据,
             而其他事务所做出的修改将不能看见
    4、加锁读:如果在此事务中对表进行修改,那么数据库将给做出修改的表加上表锁,
               在此事务提交之前其他事务对此表做出的操作都会阻塞
     
mysql> SHOW VARIABLES LIKE '%iso%';      #查看当前的隔离级别
    SET tx_isolation='参数'          #修改隔离级别
       对应参数(不区分大小写):
        Read-Uncommitted        #1
        Read-Committed          #2
        Repeatable-Read         #3(默认)
        Serializable            #4  
     
    mysql> SET GLOBAL autocommit=0;       #关闭自动提交事务
    mysql> START TRANSACTION       #启动事务
    mysql> COMMIT           #提交事务
    mysql> ROLLBACK         #回滚    
     
     
mysql事务日志:
    同事务日志和崩溃后安全恢复可以很好的保存数据安全
     
    事务日志包括:重做日志redo和回滚日志undo,事务日志通常比较小
    
    Redo记录的是已经全部完成的事务,就是执行了COMMIT的事务
    记录日志组是ib_logfile0、ib_logfile1   记录日志组可以更加需要调整文件数量
 
    Undo记录的是已部分完成并且写入硬盘的未完成的事务
     
    在mysq重启后,innodb通过事务日志将所有已完成并写入磁盘的和未完成的事务进行同步
    并将数据写入到磁盘中完成数据库崩溃后安全恢复
     
    mysql> SHOW VARIABLES LIKE 'innodb_log%';        #查看事务日志的相关配置
        innodb_log_file_size            #设置事务日志大小
    innodb_log_files_in_group      #设置事务日志组文件数量
    innodb_log_group_home_dir         #设置事务日志存放位置

本文转自  红尘世间  51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1932978
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
2月前
|
安全 关系型数据库 MySQL
mysql事务隔离级别
事务隔离级别用于解决脏读、不可重复读和幻读问题。不同级别在安全与性能间权衡,如SERIALIZABLE最安全但性能差,READ_UNCOMMITTED性能高但易导致数据不一致。了解各级别特性有助于合理选择以平衡并发性与数据一致性需求。
140 1
|
9月前
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
4100 56
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
8月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
314 7
MySQL事务日志-Undo Log工作原理分析
|
11月前
|
存储 SQL 关系型数据库
MySQL的事务隔离级别
【10月更文挑战第17天】MySQL的事务隔离级别
250 43
|
11月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
2167 14
MySQL事务日志-Redo Log工作原理分析
|
9月前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了
本文详细介绍了数据库事务的四大特性(AICD原则),包括原子性、隔离性、一致性和持久性,并深入探讨了事务并发问题与隔离级别。同时,文章还讲解了分布式系统中的CAP理论及其不可能三角关系,以及BASE原则在分布式系统设计中的应用。通过具体案例和图解,帮助读者理解事务处理的核心概念和最佳实践,为应对相关技术面试提供了全面的知识准备。
|
10月前
|
关系型数据库 MySQL
mysql事务特性
原子性:一个事务内的操作统一成功或失败 一致性:事务前后的数据总量不变 隔离性:事务与事务之间相互不影响 持久性:事务一旦提交发生的改变不可逆
|
10月前
|
关系型数据库 MySQL 数据库
MySQL事务隔离级别及默认隔离级别的设置
在数据库系统中,事务隔离级别是一个关键的概念,它决定了事务在并发执行时如何相互隔离。MySQL提供了四种事务隔离级别,每种级别都解决了不同的并发问题。本文将详细介绍这些隔离级别以及MySQL的默认隔离级别。
|
11月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?

推荐镜像

更多