逻辑架构图:
Connects(连接器):
Managerment Service & Utilities(系统管理与控制工具)
SQL Interface (SQL 接口)
Pareser(解析器):进行sql语句的解析
select * from t1;
进行语法分析,是否符合 标准SQL的语法,MySQL现在是基于SQL92的标准,并检查语法的正确性,如果语法错误,就会抛出sql错误。
Optimizer(查询优化器)
MySQL回家程序员编写的sql语句进行优化,优化内容:
1.索引优化
2.多表关联的优化
3.筛选条件的优化,where 从左到右 MySQL 找过滤力度大的 先执行
Cache与Buffer:
查询缓存,MySQL的查询缓存是基于sql 语句的hash的唯一性作为key来进行结果的缓存。
Pluggable Storage Engines(存储引擎):
MySQL的存储引擎是以表为单位,可以单独指定表存储引擎的方式。
其中在5.5之前默认的存储引擎为myisam,5.5之后默认的存储引擎为innodb
myisam存储速度快,但是不支持事务不支持行级锁
innodb:支持事务和行级锁定,事务处 理、回滚、崩溃修复能力和多版本并发控制的事务安全,比 MyISAM处理速度稍慢、支持外键
题外音:
xtraDB存储引擎是由Percona公司提供的存储引擎,该公司还出品了Percona Server这个产品,它是基 于MySQL开源代码进行修改之后的产品。 阿里对于Percona Server服务器进行修改,衍生了自己的数据库(alisql)。
Innodb与Myisam的区别:
MYSQL执行流程:
MYSQL日志文件:
1.错误日志(error log):默认是开启的,而且从5.5.7以后无法关闭错误日志,错误日志记录了运行过程中遇到的所有严重的错误 信息,以及 MySQL每次启动和关闭的详细信息
2.二进制日志(bin log):
记录数据变化
binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描 述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到 binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。 生产中开启(主要为了数据备份、恢复、主从)
通用查询日志(general query log):
会记录和MySQL有关的所有操作,生产环境不要开启。
慢查询日志(slow query log)
SQL调优 定位慢的 select
默认是关闭的。
#开启慢查询日志
slow_query_log=ON
#慢查询的阈值 long_query_time=3
#日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不 是绝对路径名,文件则写入数据目录。
slow_query_log_file=file_name
重做日志(redo log)
回滚日志(undo log)
中继日志(relay log)
#看日志开启情况
show variables like 'log_%';
数据文件:
SHOW VARIABLES LIKE '%datadir%';
InnoDB文件:
.frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息
.ibd:使用独享表空间存储表数据和索引信息,一张表对应一个ibd文件。
.ibdata文件:使用共享表空间存储表数据和索引信息,所有表共同使用一个或者多个ibdata文 件
MyIsam数据文件
.frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息
.myd文件:主要用来存储表数据信息。
.myi文件:主要用来存储表数据文件中任何索引的数据树