最近在学习做者小孩子的掘金专栏《MySQL是怎样运行的:从根儿上理解MySQL》,现将学习心得总结梳理为一个系列。mysql
Mysql有三种链接方式,包括:sql
Mysql会限制同时链接服务器的数量,系统变量(后面咱们在解释什么是系统变量、还有状态变量):max_connections表示的是最大链接数(默认151)。数据库
Mysql8.0以前会对查询结果创建缓存,第二次使用一样的语句查询时会先看缓存里面有没有,若是有直接返回查询结果。windows
注:从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除(我的以为,项目小并发量不是很高的能够用,可是并发量不高,相对来讲缓不缓存其实影响也不大。可是项目大,数据变动频繁,缓存的开销就会很大,因此不管项目大小,保持关闭状态都是能够的)缓存
MySQL的缓存系统会监测涉及到的每张表,只要该表的结构或者数据被修改,如对该表使用了INSERT、 UPDATE、DELETE、TRUNCATE TABLE、ALTER TABLE、DROP TABLE或 DROP DATABASE语句,那使用该表的全部高速缓存查询都将变为无效并从高速缓存中删除。服务器
这一阶段主要是针对未命中缓存的查询语句进行语法检查,而且将查询语句中使用的表、各类查询条件都提取出来放到MySQL服务器内部使用的一些数据结构上来。数据结构
mysql会针对咱们书写的查询语句进行优化,生成一个执行计划(能够在查询语句前面加explain查看执行计划,具体执行计划怎么看,后面有空再总结吧),这个执行计划能够看到将使用哪些索引进行查询,表之间优化后的链接顺序等东西。并发
MySQL从2007年开始提供了插件式的存储引擎API,通常来讲,链接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能咱们称为MySQL server的功能,但真正执行查询的是存储引擎的功能,存储引擎真正执行数据存取操做,存储引擎有不少,都是基于mysql的API规范进行开发的。包括下列:函数
其中,InnoDB和MyISAM是咱们最经常使用的,Mysql的默认存储引擎是InnoDB。学习