• 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

     

     

  • 相关阅读:
    Java String 类
    Java Number & Math 类
    String 方法
    创建格式化字符串
    定义存储过程如下:
    要创建一个EJB,必须要至少编写哪些Java类和接口?
    下面的那一个不属于MVC模式中的对象?
    下列哪个为JSP的隐含对象。
    以下声明正确的是。
    关于JSP生命周期的叙述,下列哪些为真?
  • 原文地址:https://www.cnblogs.com/dubhlinn/p/11285636.html
Copyright © 2020-2023  润新知