文章目录

  • 架构篇
  • 逻辑架构
  • SQL层
  • 存储引擎层
  • 分类
  • 区别
  • 执行流程
  • 物理结构
  • 日志文件
  • 数据文件


架构篇

  • MySQL要点:介绍安装,sql语句,架构,索引,锁与事务,性能分析,性能优化,集群

逻辑架构

  • 客户端–>sql层–>可插拔式存储引擎层–>文件系统
  • 需求–>处理sql–>操作文件系统

SQL层

  • 管理工具
  • 连接池
  • SQL接口:接收SQL的DDL和DML
  • 解析器
  • 优化器:mysql优化sql语句
  • 缓存

存储引擎层

分类
  • MYISAM
  • 5.5版本之前的默认存储引擎
  • 不支持事务和行锁(适合读)
  • InnoDB
  • 5.5以后(包含)的默认存储引擎
  • 支持事务和行级别的锁
  • 支持外键
  • Memory
  • 内存引擎
  • 保存在内存中
区别

InnoDB

MYISAM

存储文件

.frm表定义文件

.ibd数据和索引文件

.frm表定义文件

.myd数据文件

.myi索引文件


表锁,行锁

表锁

事务

支持(读写)

不支持(读多)

count

扫表计数

有专门存储引擎的地方

(空间换时间),where也扫表

外键

支持

不支持

数据结构

B+Tree

B+Tree

执行流程

mef 架构示意图 ms架构_日志文件

物理结构

日志文件

  • 错误日志:默认是开启的,而且从5.5.7以后无法关闭错误日志
  • 二进制日志:binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到
    binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。 生产中开启(数据备份、恢复、主从)
  • 通用查询日志:生产中不开启
  • 慢查询日志:默认是关闭的,SQL调优 定位慢的 select
#开启慢查询日志
slow_query_log=ON
#慢查询的阈值
long_query_time=3
#日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,
但不是绝对路径名,文件则写入数据目录。
slow_query_log_file=file_name
  • 重做日志
  • 回滚日志
  • 中继日志
  • 看日志开启情况:
  • show variables like ‘log_%’;

数据文件

  • 查看数据文件位置
  • SHOW VARIABLES LIKE ‘%datadir%’;
  • 日志文件:顺序写入磁盘,一次寻找磁道,快
  • 数据文件:随机写入磁盘,多次寻找磁道,慢
  • 数据写入为甚随机写入:数据有删除,会产生多余空间,最后都是通过磁盘整理操作整理空间
  • 磁盘数据落盘:利用日志文件提升IO的性能
  • 先将数据文件写入到日志文件中,因为快,再集中将日志文件写入到数据文件中.