可能很多同学学习过MySQL数据库, 并能灵活的处理表与表的关系 , 但对于MySQL底层是如何实现处理它们的就不是很了解了, 接着我们来介绍, 先看下图
以上就是mysql的整体架构, 接着我们来介绍它们
连接层
主要负责与客户端的连接(JDBC等), 授权认证 ,相关的安全方案等
服务层
从上图可以看到, 服务层中包括SQL接口, 解析器, 查询优化器, 缓存等, 服务层主要处理SQl接口等, 所有跨引擎的功能也在此层实现 , 如存储过程,函数等 ,服务层会对我们的操作进行优化, 还会使用缓存等功能
引擎层
这一层是存储引擎, 存储引擎真正负责对mysql数据的存储和提取, 不同的存储引擎的功能不同, 使用不同存储引擎的表结构也不同
物理文件存储层
存储数据, 与执行引擎交互, 还有一些文件与日志功能等
Mysql存储引擎
mysql运行不同的技术和功能来存储数据 , 这些存储的技术和功能就是存储引擎 , 存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Blackhole, 5. CSV, 6. Performance_Schema, 7. Archive, 8. Federated , 9 Mrg_Myisam
这里我们重点谈论以下两个存储引擎 : InnoDB , MyIsam
以上是几种存储引擎的特性对比
InnoDB
InnoDB也是mysql默认的存储引擎 , 支持事务, ,有行级锁和外键约束,支持全文检索(全文索引),它的设计目标是处理大容量数据库系统,MySQL 运行时 Innodb 会在内存中建立缓冲池,用于缓冲数据和索引;支持主键自增.不存储表的总行数
InnoDB适合数据的写操作
MYISAM
Myisam不支持事务, 也不支持行级锁和外键, 写数据时需要锁定整张表 , 所以效率便第一点, 支持全文索引, 支持存储表的总行数
MYISAM适合数据的读操作