演化版本MySQL:MariaDB、InnoSQL 通信类型:同步、异步 链接方式:长连接、短链接 协议:tcp、unix socket
查看服务端连接数。
客户端链接与线程关系:客户端每产生一个会话session,在服务端就会有一个线程去处理这个操作。
-- mysql默认的影响范围是会话级别,如果需要展示或修改全局的则需要加上global
show global status like '%thread%';
-- 非交互形式的超时时间28800,jdbc程序
show global variables like '%wait_timeout%';
-- 交互式的超时时间28800,客户端工具datagrip等
show global variables like '%interactive_timeout%';
-- 默认客户端最大连接数151个
show global variables like '%max_connections%';
-- 查询缓存。但是这个缓存很鸡肋,如果查询语句中的大小写不一致也认为是不同语句会清除该表上一次的查询缓存。
show variables like '%query_cache%';
复制代码
MySQL查询语句执行流程
select * from table where a=123
query_cache :缓存
Parser :语法解析
词法解析:将完整的SQL拆分为一个个单词 语法解析:进行语法检查 通过语法解析会得到一个解析树
pre process :预处理器
对语义进行分析,判断别名是否正确、表是否存在等
optimizer :优化器
对于一条SQL,其执行路径是可以不一样的。当有多个索引的时候,优先走哪个索引? 优化SQL:生成、选择执行路径(也称为执行计划)(基于cost的优化器)
execution plan :执行计划
// 查看实行计划
explain select * from user
// 返回json数据
explain format=json select * from user
-- 开启 100% 展示 MySQL 语句执行的神器-Optimizer Trace
show variables like '%optimizer_trace%'
-- 开启会有性能消耗
set optimizer_trace='enabled=on';
select * from information_schema.optimizer_trace
复制代码
{
"query_block": {
"select_i