mysql第二话 - mysql架构和执行流程

16 篇文章 0 订阅
13 篇文章 0 订阅

mysql对于做程序的肯定很熟悉吧,本文主要记录一下mysql架构和一条sql执行的整个流程

1. 连接

  • 长链接、短连接(用完就关闭)
  • 协议 Tcp、unix socket(mysql 命令本地连接用)

2.数据库

在mysql中,存在两个非常相似的概念,即数据库和数据库实例。在mysql中的定义如下:

  • 数据库:存储数据的集合
  • 数据库实例:操作数据库的集合
    一个数据库实例可以操作多个数据库,一对多的关系。
    mysql是一个单进程多线程的服务,客户端每建立起一个连接,服务端都会用一个线程去处理这个连接。这中间都存在一一对应关系。

3.数据库变量查询

3.1 服务端维持了多少个连接

show global status like "%Thread%"

线程连接数
分析一下比较重要的几个:
Threads_connected:线程连接数
Threads_running:线程运行数

3.2 各种超时时间查询,单位秒

show global variables like '%timeout%'

超时时间
分析一下比较重要的几个:
connect_timeout:连接超时时间
innodb_lock_wait_timeout:表锁超时时间
interactive_timeout:交互式工具超时时间
lock_wait_timeout:锁等待时间
wait_timeout:非交互式连接超时时间,如JDBC

3.3 连接数

show variables like '%connections%';

max_connections:最大连接数,默认151,。最大可设置10000

3.4 当前线程数

每个服务端的线程都是由id的,可以用下面这个命令查看详细线程

show processlist;

线程数
字段就不多解释了

3.5 服务出现超出最大连接数

如果线程服务出现超出最大连接数,可以用以下指令快速分析问题

show variables like '%connections%';
show variables like '%wait_timeout%';
show processlist;
show status;

3.6 查看本地相关信息

#查看目录 缓冲区 字符集
show variables like "%data%";
#查看版本相关
show variables like "%version%";

4.mysql架构图

架构图

由图可以看出mysql最上层是连接组件,下面是由管理服务和工具、连接池、解析器、优化器、缓存、存储引擎、文件系统组成。
简单介绍一下存储引擎:

InnoDB:默认存储引擎,事务安全特性、奔溃恢复能力、行级别锁、一致性非锁定性读
MyISAM:表锁的,适合读
Memory:内存存储,读取非常快,适合临时数据

5.一条sql执行的流程图

执行流程图

6.第二次查询会不会加快

答案:不会
因为,每次执行都需要走一遍上述的操作,其次缓存模块其实一直很垃圾,在8版本已经弃用
在sql执行过程中,如果想查看sql执行明细,可以在information_schema.OPTIMIZER_TRACE表中查看

以上就是本章的全部内容了。

上一篇:mysql第一话 - mysql基于docker的安装及使用
下一篇:mysql第三话 - mysql内存结构详解以及事务的更新语句的执行过程

旧书不厌百回读,熟读精思子自知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值