• mysql的逻辑架构


    架构图

    做Java开发时,项目一般会分为数据访问层、业务逻辑层、控制层等,每层处理不同的任务。类似的,mysql也不是单一的模块,其内部也分为几层。自己不会画,从网上找来了经典的mysql架构图:

     

    分层简介

    1. 连接层

    主要处理客户端的连接(例如JDBC)、权限认证等。

    2. 服务层

    • Management Serveices & Utilities:用于处理备份、容灾
    • SQL Interface:相当于Java的API,根据语句命令,判断使用哪个接口,例如select是查询、insert是插入
    • Parser:解析器,例如注释、从from开始执行等
    • Optimizer:优化器,我们手写的sql语句,会在这个组件中被优化为它认为更合理的方式
    • Caches & Buffers:缓存区,如果正好有需要查询的数据,就不需要去数据库查询了

    3. 引擎层

    mysql的引擎可插拔、适用于不同的场景,用户可以根据需求选择。

    4. 存储层

    真正的数据库文件硬件保存的区域。

     

    两种常用的引擎对比

    mysql的引擎很多,但是目前最常用的是MyISAM和InnoDB

    1. 查看所有引擎和当前默认引擎

    mysql> show engines;

    2. MySAM和InnoDB的差别

      MyISAM InnoDB
    外键 不支持 支持
    表锁 行锁
    事务 不支持 支持
    缓存 只缓存索引 缓存索引和真实数据
    表空间
    关注点 性能 并发

    总的来说,MyISAM适合小数据量的项目,InnoDB适合大数据量、高并发的项目。

    mysql语句的执行数据

    1. 手写顺序

    SELECT

    FROM

    JOIN

    ON

    WHERE

    GROUP BY

    HAVING

    ORDER BY

    LIMIT

    2. 经过mysql优化器处理后的顺序

    FROM

    ON

    JOIN

    WHERE

    GROUP BY

    HAVING

    SELECT

    ORDER BY 

    LIMIT

     

     

  • 相关阅读:
    看完了红米5 Plus发布会,我觉得魅蓝Note6降价降多了
    红米5/红米5 Plus逼出最强魅蓝Note6?降价后已成性价比神机
    java.lang.NoClassDefFoundError: org/apache/ibatis/mapping/DatabaseIdProvider
    mac tree命令
    spring boot集成dubbo
    玩转Spring Boot 集成Dubbo
    Linux下复制粘贴快捷键
    用创业舞动飞扬的青春
    SpringMVC 学习笔记(一) Hello World
    从 Kubernetes 谈容器网络
  • 原文地址:https://www.cnblogs.com/dubhlinn/p/11285636.html
Copyright © 2020-2023  润新知