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

本篇文章为大家展示了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中怎么实现逻辑架构和并发控制

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

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

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

本文题目:MYSQL中怎么实现逻辑架构和并发控制
网站URL:https://www.cdcxhl.com/article14/ggeige.html

成都网站建设公司_创新互联,为您提供品牌网站建设定制开发软件开发面包屑导航关键词优化云服务器

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化