mysql(一)Mysql架构和sql执行流程

Mysql架构和sql执行流程

  • 一条sql查询的流程
  • mysql 体系结构
  • 一条更新sql是如何执行的
    • innoDB总体架构
      • 内存结构
      • 磁盘结构
      • 后台线程
      • binlog
    • 更新sql流程总结

一条sql查询的流程

mysql(一)Mysql架构和sql执行流程_第1张图片
连接

mysql默认端口3306,客户端链接服务端的方式也很多:
	同步/异步
	长链接/短连接
	TCP/unix socket
可以通过sql查询连接超时时间、默认最大连接数,可更新最大连接数	

连接的session级别和global级别
一个客户端窗口查询,修改某个参数,如果不加global,只会在当前会话中生效。
加了global,其他的链接窗口才会生效

查询缓存

mysql自带了一套缓存模块,但是默认是关闭的,因为很鸡肋,所以缓存一般交给ORM(如mybatis的一级缓存)
8.0中直接被移除了

语法解析和预处理

select name from user where id =1;

这一条sql查询时:
1、先把一个sql拆成一个个单词,上面的sql会拆成8个符号
2、语法解析
3、预处理

mysql(一)Mysql架构和sql执行流程_第2张图片

查询优化与查询执行计划

优化器:
1、多表关联时以哪个表作为基础表
2、多个索引时选择哪个索引
等等

优化之后生成一个执行计划。
用explain +sql 就能看到执行计划

存储引擎

思考:
	数据放在那里
	在哪里执行,谁执行

存储引擎的选择:
	5.5.5之前创建表默认是 myisam,之后默认都是innoDB
	不同的表存放不同的 数据,可以选择不同的存储引擎

	Myisam
	innoDB
	memory
	csv
	archive

如何选择存储引擎:

执行引擎

执行引擎把数据返回给客户端

mysql 体系结构

总体上可以把mysql分城三层:
1、连接层-----链接客户端
2、server层:
	查询缓存、根据sql调用对应的接口、解析sql语句
	优化器优化,执行
3、存储引擎---存放数据,再往下是内存和磁盘

mysql(一)Mysql架构和sql执行流程_第3张图片

一条更新sql是如何执行的

innoDB总体架构

内存结构

磁盘结构

后台线程

binlog

更新sql流程总结

你可能感兴趣的:(mysql)