zoukankan      html  css  js  c++  java
  • 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

     

     

  • 相关阅读:
    Codeforces Round#410 Div.2
    AtCoder Beginner Contest-060
    如何将gedit变成c++编译器
    洛谷 P2486 [SDOI2011]染色
    让lu哥头痛了许久的代码(洛谷:树的统计)
    字符串模拟入门
    luogu P1553 数字反转(升级版)
    那些令人难忘的——坑
    luogu P1341 无序字母对
    最短路相关题目
  • 原文地址:https://www.cnblogs.com/dubhlinn/p/11285636.html
Copyright © 2011-2022 走看看