欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql高级 | 【一】存储引擎和SQL的读取顺序

程序员文章站 2024-03-23 15:42:28
...

转载本文章请标明作者和出处
本文出自《Darwin的程序空间》

Mysql高级 | 【一】存储引擎和SQL的读取顺序

努力终将得到回报,你要始终坚信这一点

Mysql整体分层

  • 连接层
    • 与客户端进行连接的服务
    • 主要完成一些类似连接的处理,授权认证及相关的安全方案
  • 服务层
    • 提供和新的服务功能
    • 会对sql进行一些优化
    • 所有跨存储引擎层的功能都在这一层
    • 查询内存缓存的服务,提升系统性能
  • 引擎层
    • 真正负责Mysql的数据的存储和提取
    • 不同的存储引擎提供不同的功能,可以根据自己的实际需求来选取
  • 存储层
    • 数据存储在计算机文件系统之上,并完成与存储引擎的交互

Mysql高级 | 【一】存储引擎和SQL的读取顺序

存储引擎

概念

  • Mysql中的数据使用各种不同的技术存储在文件(或者内存中);
  • 这些技术中每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力;
  • 通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能;
  • 这些不同的技术以及配套的相关功能在Mysql中被称之为存储引擎;

查看存储引擎

show ENGINES;

Mysql高级 | 【一】存储引擎和SQL的读取顺序

查看当前使用的存储引擎

show  table status from JD(数据库名称) where name = "表名"; 

Mysql高级 | 【一】存储引擎和SQL的读取顺序

MyISAM和InnoDB的区别

  • 主外键
    • InnoDB支持
    • MyISAM 不支持
  • 事务
    • InnoDB 支持
    • MyISAM 不支持
  • 行表锁
    • InnoDB 行锁
    • MyISAM 表锁
  • 缓存
    • InnoDB 索引和数据均缓存,对内存要求比较高,而且内存的大小有决定性的影响
    • MyISAM 表锁
  • 表空间
    • InnoDB 小
    • MyISAM 小
  • 关注点
    • InnoDB 事务
    • MyISAM 性能
  • 默认安装
    • InnoDB 默认支持,并且新建表默认使用
    • MyISAM 默认支持
  • 文件结构
    • InnoDB 事务
      • b.frm:描述表结构的文件,字段长度类型等
      • b.ibd:存储数据信息和索引信息
    • MyISAM 性能
      • b.frm:描述表结构的文件,字段长度类型等
      • b.MYD:数据信息文件,存储数据信息文件
      • b.MYI:索引信息文件

SQL读取的顺序

  • 写sql的顺序和mysql执行sql的顺序:

    平常我们写sql的时候顺序大概是这个样子的:
    Mysql高级 | 【一】存储引擎和SQL的读取顺序

    但是sql读取的时候顺序是这个样子的:
    Mysql高级 | 【一】存储引擎和SQL的读取顺序

  • 整体执行过程:

    • 先对多表进行关系,然后再根据连接条件查找符合条件的记录
    • 在符合条件的基础上再进行where条件筛选
    • 对筛选出来的内容进行分组操作
    • 分组完成之后使用having语句再次筛选出满足条件的记录
    • 取所有满足条件的记录
    • 对取出的记录进行排序
    • 最终从取出的记录获取limit中指定的记录

Mysql高级 | 【一】存储引擎和SQL的读取顺序


Mysql高级 | 【一】存储引擎和SQL的读取顺序
喜欢的朋友可以加我的个人微信,我们一起进步
相关标签: mysql高级