mysql逻辑架构
逻辑架构图
连接器(Connectors)、系统管理与控制工具(Management Services & )、连接池(Connection Pool)、sql接口(SQL interface )、解析器(Parser)、查询优化器(Optimizer)、查询缓存(Cache和Buffer)、存储引擎(Pluggable Storage Engine)
连接器
系统管理与控制工具
连接池
sql接口
接受SQL DDL DML
解析器
形成语法树
查询优化器
对表查询的过程优化,比如说大表小表,则先执行小表查询再去查询大表数据
查询缓存
将查询到的结果存储起来,下次就不用再到磁盘上读取,直接在缓存里读取
存储引擎
mysql的存储引擎都是以表为单位的
create table user() engine =InnoDB/Memory/MyISAM
mysql的几种存储引擎的对比
存储引擎 | 说明 | 使用场景 |
---|---|---|
MyISAM | 高速引擎,拥有较高的插入、查询速度,但不支持事务、不支持行锁、支持三种不同的存储格式:静态型、动态型和压缩型。 | 适合报表查询,结存表 适合用于插入新记录和读取记录、对应用的完整性和并发性要求低的也可以使用 |
InnoDB | 5.5版本后是Mysql的默认数据库,支持事务和行级锁,事务处理回滚、崩溃修复和多版本并发的事务安全,处理速度相对慢一些,支持外键 | 对事物的完整性要求比较高的(银行、订单),要求实现并发控制(比如售票),频繁的更新、删除操作的数据库功能 |
ISAM | MyISAM的前身,在mysql5.0版本以后就不再默认安装了 | |
Memory | 内存存储引擎,拥有极高的插入和查询效率,但是会占用和数据量成正比的内存空间,只在内存上保存数据,意味着数据可能会丢失,相当于redis,存储的数据也不会很多 | 使用场景一般在小表,拥有最终的统计结存表比如每半个小时结存一次用户的下单情况,用户查询就很快,一般需要很快的临时表也可以使用 |
执行流程
物理结构
错误日志(errorlog)、二进制日志(bin log)、通用查询日志(general query log)、慢查询日志()
日志文件
错误日志
二进制文件
通用查询日志
慢查询日志
重做日志
回滚日志
中继日志