0424-MySQL事务与锁机制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 0424-MySQL事务与锁机制

事务四个特点:ACID

原子性:回滚日志(undolog)
一致性:其他三个特点,共同保证了一致性。
隔离性:MVCC,锁
持久性:redolog

MySQL架构

Client -> Server
连接器:管理链接,验证权限
分析器:词法分析,语法分析 - > AST 语法树
优化器:CBO成本,RBO规则
执行器:跟存储引擎交互
存储引擎:innodb myisam memory

MySQL日志系统

错误日志:errorlog
主从同步:binlog
慢日志:slowlog
中继日志:relaylog
回滚日志:undolog(innodb)
前滚日志:redolog(innodb)
WAL:Write Ahead Log 顺序读写

两阶段提交:
先提交redolog,状态为prepare状态;在写binlog,然后redolog进行commit提交。
保证数据一致性。
同步,半同步。给索引加锁
锁是加在数据上还是索引上的?

MVCC

MVCC:multi-version concurrency control : 多版本控制,不需要加锁解决并发读写问题。本质是维持一个数据的多个版本,使得读写操作没有冲突。

数据库三种并发场景:
读读:不需要并发控制。
读写:有数据安全问题,可能存在重复读与脏读; 解决方法:MVCC。
写写:有数据安全问题,会存在丢失更新问题; 解决方法:锁

数据读取方式:
当前读:读取的是数据的最新版本,而且要保证其他事务不能修改当前记录。update
快照读:不加锁的非阻塞读,读取的是历史版本数据,不是最新数据。不加锁的select触发快照读。

MVCC核心组件

隐藏字段:
DB_TRX_ID 记录创建这条记录或者最后一次修改记录的事务ID
DB_ROLL_PTR 回滚指针,指向上一个历史状态
DB_ROW_ID 隐藏主键,如果数据没有主键,那么innodb会生成一个6字节的rowid
事务ID是mysql自动分配的,是自增的。

Undolog:
回滚日志,在进行insert delete update操作的时候,产生的方便回滚的日志信息。
undolog实际是一个链表,链首是最新记录,链尾是最早的旧记录。
undolog不会无线扩大,server层会有一个叫做purge的线程来清理undolog的数据。

ReadView:
表示事务在进行快照读的时候,产生的读视图;在进行快照读的时候,会生成一个数据系统当前的快照,记录并维护的是事务的信息,而不是数据的信息。
trx_list : 数值列表,表示在生成ReadView时,当前系统活跃的事务ID
up_limit_id 表示trx_list 中事务id最小值
low_limit_id :ReadView生成时尚未分配的下一个事务ID

RC隔离级别下,每次进行快照读,都会生成新的ReadView。
RR隔离级别,每个事务只有在第一次进行快照读生成ReadView,之后一直沿用之前的ReadView。

RR隔离级别,能否解决幻读问题? 不能。
幻读出现的本质原因是:
如果事务中,都是快照读,不会出现幻读;如果快照读和当前读一起使用,就出现幻读。

Hyperloglog

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
115 4
|
6天前
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
12天前
|
SQL 关系型数据库 MySQL
MySQL基础:事务
本文详细介绍了数据库事务的概念及操作,包括事务的定义、开启、提交与回滚。事务作为一组不可分割的操作集合,确保了数据的一致性和完整性。文章还探讨了事务的四大特性(原子性、一致性、隔离性、持久性),并分析了并发事务可能引发的问题及其解决方案,如脏读、不可重复读和幻读。最后,详细讲解了不同事务隔离级别的特点和应用场景。
58 4
MySQL基础:事务
|
12天前
|
关系型数据库 MySQL 数据库
Mysql的锁
本文介绍了MySQL中表级锁和行级锁的区别,其中MyISAM仅支持表级锁,而InnoDB支持表级锁和行级锁,默认为行级锁。表级锁锁定整个表,实现简单,资源消耗少,但并发度低;行级锁仅锁定相关记录,减少冲突,提高并发度,但加锁开销大。此外,还介绍了共享锁和排他锁的概念及意向锁的作用。
|
19天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
54 0
|
19天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
42 0
|
19天前
|
存储 关系型数据库 MySQL
MySQL 中的事务存储引擎深入解析
【8月更文挑战第31天】
12 0
|
3天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
5天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
65 11
|
24天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~

热门文章

最新文章