一、MySQL逻辑架构1、逻辑架构图通过以下逻辑架构图,您可以大致了解MySQL各架构组件之间的协同工作关系。非常经典的C/S架构风格,即client/server模式。2.层次描述客户端连接通常进行连接池管理、连接用户认证、安全管理等操作。您可以通过以下命令查看连接配置信息:SHOWVARIABLESLIKE'%connect%';可以看到最大连接数和每个连接占用的内存等相关配置。核心功能第二层架构封装了MySQL的一系列核心操作,如查询分析、优化、缓存、内置函数、触发器、视图等,跨存储引擎的功能都在这一层实现。存储引擎MySQL的最底层封装也是核心功能。不同的存储引擎具有不同的特性和功能,共同点是处理数据的存储和提取。二、概念介绍1、存储引擎MySQL数据库存储引擎是数据库的底层架构组件。数据库管理系统使用数据引擎进行数据的创建、查询、更新和删除操作。不同的存储引擎提供不同的存储机制、索引技术、锁定级别和其他功能。不同的存储引擎也有不同的特性和功能,以满足不同场景下的业务需求。2.支持关系可以使用下面两条命令查看当前MySQL版本以及对存储引擎的支持情况。选择版本();显示引擎;可以看到本地环境是MySQL5.7,支持以下存储引擎:这个版本默认的存储引擎是:InnoDB,功能最丰富最强大,支持事务,分布式事务,事务保存点。三、常用存储引擎1、InnoDB引擎(一)、基本描述InnoDB引擎是MySQL默认的事务引擎。它被广泛使用,非常擅长处理短期交易,并且具有自动崩溃恢复的特性。在日常开发中,一般需要使用那个引擎。(2)ArchitectureDiagramInnoDBArchitectureDiagram本图来自MySQL官网文档。整体分为三层:内存结构、缓存、磁盘结构。内存结构内存结构包括四大组成部分:BufferPool:缓冲池:是主内存中的一块区域,InnoDB在访问表和索引数据时缓存表和索引数据,大大减少磁盘IO操作,提高效率。ChangeBuffer:写缓冲区:避免每次增删改查的IO操作,提高性能。AdaptiveHashIndex:AdaptiveHashIndex:使用index关键字的前缀构建哈希索引,提高查询速度。LogBuffer:日志缓冲区:将要写入的数据保存到磁盘上的日志文件中,缓冲区的内容会周期性的刷新到磁盘中。DiskstructureTables:数据表的物理结构。索引:索引的物理结构。Tablespaces:表空间,数据存储区。DataDictionary:数据字典,存储元数据信息的表,如表描述、结构、索引等。DoublewriteBuffer:位于系统表空间的一个存储区域。InnoDB在刷新BufferPool中的页时,会先将数据页写入缓冲区,然后再写入磁盘。RedoLog:记录DML操作的日志,用于崩溃后的数据恢复。UndoLogs:数据变化前的快照,可用于回滚数据。(3)特性描述支持事务在一个事务中执行一组SQL语句时,要么全部成功,要么全部失败。支持分布式事务分布式事务意味着即使不同的操作位于不同的服务应用上,仍然需要保证事务的特性。常见场景:订单和库存在不同的服务中,但可以保持一致。支持行级锁来锁定一行数据的锁机制就是行级锁。只有InnoDB引擎支持MySQL5.7。加锁的粒度越小,自然支持的并发就越高,加锁机制也变得越复杂。支持MVCC多版本并发控制,通过保存某个时间点数据的快照来实现。这意味着无论事务运行多长时间,您都可以在同一事务中看到一致的数据视图。根据事务的开始时间不同,也意味着不同的事务在同一时刻看到的同一张表中的数据可能是不同的。对聚集索引的支持是对磁盘上的实际数据进行重组,以按一个或多个指定列的值进行排序。因为聚簇索引的索引页指针指向数据页,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引更快。2、MyISAM引擎(一)、基本描述MySQL5.1及之前版本默认的存储引擎不支持事务和行级锁,自然崩溃后不能自动恢复。(2)特性描述锁表机制锁住整张表,不锁行,读数据加共享锁,写数据加排它锁。全文索引支持全文索引,一种基于分词创建的索引,可以支持复杂的搜索查询。3.其他引擎在MySQL系统中,InnoDB和MyISAM引擎是最常用的。您可以根据业务需要熟悉其他各种存储引擎。一句漫谈:人生苦短,编程语言更是扑朔迷离,令人厌烦,所以学习的时候一定要挑重点,重点是什么,重点内容是用得最多的。4、存储引擎的选择在公司的开发规范中,一般都会强制使用InnoDB引擎,除非有InnoDB无法支持的偏心业务。5.源码地址GitHub地址https://github.com/cicadasmile/mysql-data-baseGitEE地址https://gitee.com/cicadasmile/mysql-data-base
