千家信息网

MYSQL中怎么实现逻辑架构和并发控制

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇文章为大家展示了MYSQL中怎么实现逻辑架构和并发控制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql 的逻辑架构图如下:图片来源:极客时间Ser
千家信息网最后更新 2025年12月03日MYSQL中怎么实现逻辑架构和并发控制

本篇文章为大家展示了MYSQL中怎么实现逻辑架构和并发控制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。


Mysql 的逻辑架构图如下:

图片来源:极客时间

  • Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,


    以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。


  1. 连接器
    连接器负责跟客户端建立连接、获取权限、维持和管理连接。


  2. 查询缓存
    MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。


    如果在缓存中,则直接返回结果。

    如果语句不在查询缓存中,就会继续后面的执行阶段,执行完成后,执行结果会被存入查询缓存中。


  3. 分析器
    分析器先会做"词法分析,语法分析"。


    你输入的是由多个字符串和空格组成的一条 SQL 语句,MySQL 需要识别出里面的字符串分别是什么,代表什么。


  4. 优化器
    优化器是在表里面有多个索引的时候,决定使用哪个索引;


    或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。


  5. 执行器
    执行器开始执行语句,将结果集返回给客户端。


  • 存储引擎层负责数据的存储和提取。

    其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。


    现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。


并发控制

下来我们来看看Mysql在并发控制方面都有哪些特点。

  • 读写锁


  1. 读锁是共享的,多个客户端同一时间可以读同一个资源,互补干扰。


  2. 写锁是是排他的,也就是说一个写锁会阻塞其他的写锁和读锁。


  • 锁粒度


  1. 表锁,锁定整张表,表锁是server层高的锁,该锁会忽略存储引擎的锁机制。


  2. 行级锁,锁定数据行,行级锁只在存储引擎层实现。


  • 事务ACID


  1. 原子性(atomicity)
    一个事务必须被视为一个不可分割的最小工作单元,整个事务要么全部执行成功,要么全部失败回滚,不可能一部分成功,一部分失败,这就是原子性。


  2. 一致性(consistency)
    数据库总是从一个一致性的状态转换到另一个一致性的状态,例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。


  3. 隔离性(isolation)
    通常来说,一个事务所做的修改在最终提交以前,对其事务时不可见的。


  4. 持久性(durability)
    一旦事务提交,则其所做的修改就会永久的保存到数据库中。



锁粒度的升级和实现ACID特性都会增加系统的开销。

一个实现了ACID的数据库,相比没有实现ACID的数据库,通常会需要更强的cup处理能力,更大的内存,和更多的磁盘空间。

大家可以根据业务是否需要事务处理,来选择合适的存储引擎。

  • 隔离级别


  1. RED UNCOMMITTED(未提交读)
    在RED UNCOMMITTED级别,事务中的修改,即使没提交,对其他事务也是可见的。


    事务可以读取未提交的数据,这被称为"脏读"(Dirty Read),因为读取的很可能是中间过程的脏数据,而不是最终数据。


  2. RED COMMITTED(提交读)
    大多数数据库系统默认的隔离级别都是RED COMMITTED,但是MYSQL不是。


    RED COMMITTED说的是,一个事务只能读到其他事务已经提交的数据,所以叫提交读。


    这个事务级别也叫做不可重复读(nonrepeatableread),因为两次同样的查询,可能会得到不同的结果。


  3. REPEATABLE READ(可重复读)
    REPEATABLE READ解决了脏读的问题。


    该级别保证了在同一事务中多次读取同样的记录结果是一致的。


    但是无法解决幻读的问题,所谓幻读,指的是当某个事务再读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围内的记录时,发现多了一行,会产生幻行。


  4. SERIALIZABLE(可串行化)
    SERIALIZABLE是最高级别的隔离。


    它通过强制事务串行执行,避免了前面说的幻读的问题。


    简单来说,SERIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。


Mysql的InnoDB存储引擎默认的隔离级别的是REPEATABLE READ(可重复读),并且通过间隙锁(next-key locking)策略防止幻读的出现。

间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻行的插入。

上述内容就是MYSQL中怎么实现逻辑架构和并发控制,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

事务 数据 存储 引擎 查询 级别 缓存 数据库 结果 语句 分析 隔离 架构 控制 一致 多个 问题 逻辑 一致性 分析器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全英语演讲比赛作文 主机送的数据库 四川互联网软件开发 大同新时代网络安全常见问题 订制奶茶软件开发公司 软件开发面试官需要注意什么 youtube亚太服务器在哪 金沙网络安全和信息化委员会 网络安全法律技术问题 德州直销软件开发费用 网络安全简单黑板报图片 社交软件开发要用到什么技术 vc 定时读取串口数据库 添加数据库以后数据出问号 街球无法解析服务器名称 网络安全知识顺口溜简短 我的世界周末云服务器 网络导致数据库失败 网络安全领域有哪些证书 计算机应用软件开发英文 计算机网络技术保护隐私 数据库和表的管理实验报告心得 定远工业软件开发技术代理商 浙江省网络安全培训 网络安全ip盗用 临床医学数据库论文收录 汤森路透并购数据库 互联网十五项领先科技成果 珠海微商软件开发报价 云服务器哪家便宜能用来干嘛
0