MySQL架构与历史

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL架构与历史

第一章 MySQL架构与历史


之前没有学过MySQL,借此机会边看课程边翻书,加油!


1.1 MySQL逻辑架构

  • 最上层

连接处理、授权处理、安全等

  • 第二层

存储过程、触发器、视图等

  • 第三层

存储引擎


image.png


1.2 并发控制

1.2.1 读写锁

  • 共享锁(读锁):多个用户在同一时刻可以读取同一资源,而互不干扰
  • 排它锁(写锁):一个写锁会阻塞其他的写锁和读锁


1.2.2 锁策略

  • 表锁

最基本、开销最小的锁策略

写锁请求优先级更高


  • 行级锁

开销大

支持并发处理


1.3 事务

如果数据库引擎能够成功地对数据库应用该组查询的全部语句,就执行该组查询;如果其中有任何一条语句因为某些原因无法执行,那么所有语句都不会执行。


1.3.1 ACID

  • atomicity(原子性):不能只执行其中的一部分操作
  • consistency(一致性):数据库总是从一个一致性的状态转换到另一个一致性的状态
  • isolation(隔离性):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
  • durability(持久性):一旦事务提交,则其所做的修改就会永久保存到数据库中。


1.3.2 隔离级别


image.png


1.3.3 死锁

两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。当多个事务视图以不同的顺序锁定资源时,就可能会产生死锁。


  • InnDB处理死锁的方法

将持有最少行级排它锁的事务进行回滚


1.3.4 事务日志

存储引擎在修改表的数据时,只需要修改其内存拷贝,再将修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。


1.4 多版本并发控制


1.5 MySQL的存储引擎

1.5.1 InnoDB存储引擎(*)

设计用来处理大量的短期事务,这类事务大多数情况是正常提交的,很少会回滚。


1.5.2 MyISAM存储引擎

在MySQL5.1及之前的版本,这是默认的存储引擎。提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但不支持事务和行级锁,且崩溃后无法安全恢复


  • 特性:
  1. 加锁与并发
  2. 修复
  3. 索引特性
  4. 延迟更新索引建


1.5.3 选择合适的引擎

我们知道MySQL有内建的其他存储引擎,还有第三方存储引擎;大多数情况下,InnoDB都是正确的选择,所以在MySQL5.5版本时将InnoDB作为默认的存储引擎了。

除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎。


  • 日志型应用:MyISAM或者Archive

开销低

插入速度快


  • 只读或者大部分情况下只读的表

不介意崩溃恢复问题,选用MyISAM

MyISAM引擎在一开始可能没有任何问题,应用压力上升可能会迅速恶化


  • 订单处理:InnoDB

支持事务是必要选项


  • 电子公告牌和主体讨论论坛:


  • CD-ROM应用:可以考虑MyISAM表或者压缩表


  • 大数据量:Infobright

数据量在10TB以上的级别


1.5.4 转换表的引擎

书中介绍了三种方法,及各自的优缺点。

  1. ALTER TABLE
  2. 导入与导出
  3. 创建与查询(CREATE和SELECT)


1.6 MySQL时间线(Timeline)

由于时间问题暂时未读


1.7 MySQL的开发模式

目前已基本稳定,在Oracle定期发布的新里程碑开发版本中,会包含即将在下一个GA(Generally Available)版本发布的新特性。MySQL遵循GPL开源协议,全部的源代码(除了一些商业版本的插件)都会开放给社区。


总结

InnoDB对大多数用户是最佳选择。

本周阅读时间仓促,相信在下面时间的学习中自己可以多应用、多理解。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
23天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
2月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
199 3
Mysql高可用架构方案
|
3月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
152 1
|
4月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
2月前
|
SQL 存储 缓存
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
【赵渝强老师】MySQL的体系架构
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
5月前
|
SQL 关系型数据库 MySQL
(二十五)MySQL主从实践篇:超详细版读写分离、双主热备架构搭建教学
在上篇《主从原理篇》中,基本上把主从复制原理、主从架构模式、数据同步方式、复制技术优化.....等各类细枝末节讲清楚了,本章则准备真正对聊到的几种主从模式落地实践,但实践的内容通常比较枯燥乏味,因为就是调整各种配置、设置各种参数等步骤。
700 3
|
16天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
41 3
|
16天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
45 3
|
16天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
59 2