• MYSQL逻辑架构与存储引擎


     MYSQL逻辑架构

    1、连接层

    最上层是一些客户端和连接服务,包括本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。

    2、服务层

    第二层架构主要是完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析以及优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。

    如果是select语句,服务器还会查询内部的缓存。如果缓存足够大,这样在解决大量读取操作额环境中就能够很好的提升系统的性能。

    3、引擎层

    存储引擎层,存储引擎层真正负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。

    4、存储层

    数据存储层,主要将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互

    存储引擎简介

    存储引擎室指表的类型以及在计算机上的存储方式

    下面介绍几种MySQL最常见的几种存储引擎

    1、InnoDB(mysql5.5之后的默认存储引擎)

    • 它遵循ACID原则设计,提供了具有提交、回滚和崩溃恢复的事务功能;
    • 具有主外键;
    • 支持行锁,操作时只锁某一行,不对其他行有影响,适合高并发操作;
    • 不仅缓存索引还缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响;

    优势:在于提供了良好的事务处理,崩溃修复能力和并发控制,增删性能好

    劣势:占用空间比较大

    使用场景:银行(对事物的完整性要求很高)、售票(要求实现并发控制)

    2、MyLSAM(mysql5.5之前的默认存储引擎)

    • 基于LSAM存储引擎,并对其进行扩展;
    • 不支持主外键,不支持事务;
    • 只支持表锁,即使操作一条记录也锁住整张表,不适合高并发的操作;
    • 只缓存索引,不缓存真实数据;
    • 基于MyLSAM的存储引擎的表支持三种不同的存储格式:静态型、动态型、压缩型

    优势:占有空间小,处理速度快,查询性能好

    劣势:不支持事务操作,不适合并发操作

    我们常用的两个存储引擎就是InnoDB和MyLSAM,我们可以进行比较:

    MyLSAMInnoDB
    主外键不支持支持
    事务不支持支持
    行标锁只支持表锁支持行锁
    缓存只缓存索引,不缓存真实数据不仅缓存索引还缓存真实数据
    性能查询性能好增删性能好
    表空间
    关注点性能事务

     

    3、MEMORY

    mysql中一类特殊的存储引擎,它使用存储在内存中的内容来创建表,而且数据全放在内存中

    优势:数据存储在内存中有利于快速处理,提高表的效率

    劣势:不安全,把数据存储在内存中,关机或重启数据都会消失,断电即失

    4、Archive

    • 用于数据归档,压缩比非常高;
    • 存储空间大概是InnoDB的10-15分之一;

    用于存储历史数据非常合适,比如记录日志信息

    5、MERGE

    也称MRG.MyLSAM,是一组MyLSAM表的组合,这些MyLSAM表结构必须完全相同.

    SQL执行顺序

    手写

    机读

  • 相关阅读:
    Python3.9的69个内置函数(内建函数)介绍,并附简单明了的示例代码
    【深度学习】详解 BEiT
    【脑机接口 算法】EEGNet: 通用神经网络应用于脑电信号
    C++智能指针
    界面控件开发包DevExpress v23.1.6全新发布|附高速下载
    2021年数维杯数学建模C题运动会优化比赛模式探索求解全过程文档及程序
    Linux CentOS 8.x 安装Git
    JavaScript模块导入与编程
    关于 useEffect(() => { handlePostRequest(); }, []);执行2次(已解决)
    人工智能 | ShowMeAI资讯日报 #2022.06.28
  • 原文地址:https://blog.csdn.net/weixin_72076848/article/details/126604179