MySQL的逻辑架构
1 第一层:连接层
实现与客户端的连接,服务器为安全接入的每个用户客户端验证它的所具有的操作权限,在该层引入了连接池。
2.第二层:服务层
完成MySQL的核心功能:SQL接口、缓存的查询、SQL的的分析优化、内置函数的执行。在该层MySQL服务器会解析查询并创建相应的内部解析树,并且确定对其完成相应的优化(确定表的查询顺序、是否利用索引),最后生成相应的执行操作。如果是select语句,还会查询内部缓存。
3.第三层:引擎层
数据引擎负责MySQL数据的存储和提取,默认是数据引擎是InnoDB。
4.第四层:存储层
将数据存储在物理硬件上。
数据引擎
其实常用的数据引擎为InnoDB和MyISAM
功能 /数据库引擎 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁 (操作一行记录的时候会锁住整个表,因此可见不舍和用于高并发) | 行锁(操作时只会锁住行,不对其他有影响,因此适用于高并发) |
缓存 | 只缓存索引,不缓存真实的数据 | 对索引和真实的数据都进行缓存。因此它的内存的要求会较高,而且内存的大小有着决定性的作用 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
总结:在建表的时候尽量少用物理的外键约束,而是使用逻辑上的外键约束,因为物理的外键约束只是适用于INNOBD引擎支持。