mysql

总体分层

  • 连接层
  • 服务层
  • 引擎层
  • 存储层

逻辑架构组成

  • connect连接层
  • 业务层
  • 可插拔组件式存储引擎
  • fileSystem文件存储

分层架构好处

  • 哪个出问题找哪个
  • 插件式存储引擎,将查询处理其他的任务以及数据的提取互相分离
  • 可以根据业务需求和业务的需要选择合适的存储引擎

存储引擎

存储引擎的概念

mysql中数据用各种不同的技术存储在文件(或者内存)中

这些技术的每一种都使用不同的存储机制,索引技巧,锁定水平,提供广泛的不同的功能和能力

通过这选择不同的技术,你能够活的额外的速度或者功能,从而改善你应用的整体功能

这些不同的技术以及配套的相关功能在mysql中被称为存储引擎

例如:如果你在研究大量的临时数据,你也许需要使用内存存储引擎.内存存储引擎能够在内存中存储所有的表格数据

也许需要一个支持事物处理的数据库(以确保事物处理不成功时数据的回退能力)选择支持事物的存储引擎

选择符合自己功能的存储引擎才是最好的

查看存储引擎的sql语句

show ENGINES

查看当前使用存储引擎的sql语句

SHOW variables LIKE '%storage_engine'

MyISAM和InnoDB的区别

MyISAMInnoDB
主外键不支持支持
事物不支持支持
行表锁表锁行锁
缓存只缓存索引,不缓存数据不仅缓存索引,还要缓存真实数据(对内存要求高)
关注点性能事物
文件结构描述表结构文件,字段长度 数据信息文件存储数据信息 索引文件信息描述表结构文件,字段长度等,存储数据信息和索引信息

sql执行的顺序

mysql书写的顺序

mysql读取顺序

from表名->on连接条件->join表名->where查询条件->group分组字段->having分组后条件->select distinct字段->order by排序条件->limimt 查询起始位置,查询条数

join连接

内连接:作用 查询俩张表的共有部分

SELECT * FROM employee e INNER JOIN department d on e.dep_id=d.id

左右连接:把坐标的内容全部查出,右边表只查出满足条件的记录 a和b的共有再加上a的独有

SELECT * from employee e LEFT JOIN department d on e.dep_id=d.id

查询独有数据可以在左右连接加上where id=null

全连接:由于mysql不支持Full Outter Join关键字(Oracle)可以用union把做连接和右连接的内容加到一起

SELECT * from employee e LEFT JOIN department d on e.dep_id=d.id
UNION
SELECT * from employee e RIGHT JOIN department d on e.dep_id=d.id

查询左右各自表独有的数据

SELECT * from employee e LEFT JOIN department d on e.dep_id=d.id where d.id is null
UNION
SELECT * from employee e RIGHT JOIN department d on e.dep_id=d.id where e.dep_id is null
Last modification:November 17, 2023
如果觉得我的文章对你有用,请随意赞赏