美文网首页
MySQL逻辑结构

MySQL逻辑结构

作者: SuperMarry | 来源:发表于2019-02-15 12:55 被阅读0次

                                                                                                     MySQL逻辑架构

    1.  MySQL逻辑架构

    如图,MySQL服务器逻辑架构分为三层:

    第一层,这一层不是MySQL独有的解构,很多基于网络的架构都需要这一层,用于做连接处理、授权认证、安全等等。

    第二层,MySQL的核心功能的核心层,称作SQL Layer,查询解析、分析、优化缓存以及所有的内置函数都在这一层完成,所有跨存储引擎的功能也都在这一层实现:存储过程、触发器、视图等等。

    第三层,MySQL的最底层,包含了存储引擎(注:存储引擎负责MySQL中数据的存储和读取),服务器通过API和存储引擎进行通讯,而接口屏蔽了存储引擎之间的差异,对上层查询透明。

    2.并发控制

    多个session之间的读写产生的并发问题在生产上是很常见 的,MySQL从多个角度进行并发控制。

    2.1读写锁

    2.1.1 共享锁(Share Lock)

    共享锁又被称为读锁,常被简称为 S 锁。一个事务获取到数据行的共享锁后,其他事务也可以获取到此数据行的共享锁,但是不能获取到该数据行的排他锁,也就是说当某一数据行被一个事务读取的时候,其他事务可以并发的去读取数据,但是不能修改此数据,直到共享锁被事务释放。

    在查询语句后面添加   LOCK IN SHARE MODE  ,   Mysql会对查询结果的每一行添加共享锁。

    2.1.2排它锁(eXclusive Lock)

    排它锁又被称为写锁,常被称为X锁。一个事务获取到数据行的排它锁后,其他事务不能获取到该行的任何锁,即,当一个事务对某一数据行进行修改的时候,其他事务不能对该数据行进行增删改查。

    在查询语句后面添加 FOR UPDATE ,  MySQL会对查询结果的每一行添加排他锁。

    2.2意向锁

    意向锁是表级锁,对于 insert 、delete、update, InnoDB会自动给涉及到的数据添加意向锁,无需用户干预。

    意向锁又分为 意向共享锁(IS)和意向排他锁(IX),这里不再展开阐述,有兴趣的读者可自行去百度理解。

    2.2锁粒度

          我们上面介绍了几种锁,可以很直观的看出,当我们的锁锁定的数量越少,数据库可以接受的并发程度就越高,那我们为什么不直接用行锁来应对所有的并发情况呢,这样的锁定的数据量是最小的。但是为什么不这样做呢?因为锁的获取、检查、释放等操作一样要消耗系统资源。

       MySQL提供两种重要的锁策略,行级锁(row lock),行级锁可以面对最大的并发处理,但相应的也面对着最大的锁开销。行级锁只在存储引擎层实现,服务器层没有实现。

     表锁(table lock),表锁是开销最小的锁策略。

    相关文章

      网友评论

          本文标题:MySQL逻辑结构

          本文链接:https://www.haomeiwen.com/subject/njcpeqtx.html