数据库执行原理
1. SQL执行过程:
1) 客户端:如Navicat,idea内mapper/dao层调用的SQL语句;
2) 服务器:也就是远程服务器;
3) 连接器:如Navicat需要与mysql数据库连接。用户名权限等都需要连接器。
4) 分析器:进行语法解析。
词法分析器:把完整的SQL语句打碎成一个个单词;
语法分析器:将词法分析的结果根据一定的规则生成一个数据结构,语法树。语法解析也是会解析格式的。
预处理器:语法正确后,会对表名、字段等是否存在进行检测;
5) 优化器:MySql自带优化器。优化器按照自己特定的规则进行优化;
一条SQL语句执行的方式很多,最终返回的结果是相同的;优化器的目的是根据(语法解析的)解析树生成不同的执行计划,择优执行;
简单的执行过程:SQL语句在客户端内写好,由服务器内来执行,执行SQL语句需要有连接器,再将SQL语句给到分析器,继而到优化器,优化完成后开始执行sql语句;执行SQL语句需要存储引擎;
连接MySQL需要通信协议;
6) 通信协议:(数据库)本地连接--socket;远程连接--TCP协议;
7) 长链接与短链接:
简单来说就是与服务器链接的长短;
连接好后,执行SQL语句,关闭;
短链接:连接-->数据传输-->关闭;查询:show global variables like 'wait_timeout'; -- 非交互式超时时间,如 JDBC 程序;
长链接:连接-->数据传输-->保持连接-->数据传输-->保持连接-->..-->关闭连接;查询:show global variables like 'interactive_timeout'; -- 交互式超时时间,如数据库工具
长连接与短连接都会有一定的时限自动关闭,默认8h;
查看当前服务器的连接状态:show global status like 'Thread%';
Thread_cached:线程缓存中的线程数;
Thread_connected:当前打开的连接数;
Thread_created:为处理连接而创建的线程数;
Thread_running:未休眠的线程数;
MySQL最大连接数:show variables like 'max_connections';
默认151,最大为2的14次方16384;
临时修改:set global max_connections = 1000;
永久生效:修改/etc/my.cnf 文件(是MySQL配置文件)
8) 缓存
再次执行同一条SQL语句,就回去缓存查找;注意:语句必须一模一样,甚至字母大小写;表内任何一条数据有变化,缓存都会失效;
版本8以后取消了此功能。
show variables like 'query_cache%';
9) 存储引擎(索引结构):
索引:帮助mysql高效获取数据的排好序的数据结构。
关系型数据的类型是存在表里的,表在存储数据的同时会组织数据的存储结构;此结构是存储引擎决定的,而存储引擎也叫表类型;
在MySQL内支持多种存储引擎,是可替换的,所以也叫插件式存储引擎。
查看支持的存储引擎:show engines;
MylSAM与InnoDB是最常见的;
不同的存储引擎决定一张表在磁盘的类型,每个存储引擎都有一个frm文件,是表结构定义文件;
查看文件存储地址:show engines;
10) MylSAM:
在MySQL版本5.5前,默认存储引擎是MylSAM,是MySQL自带的。建表时,不指定存储引擎,则会默认MylSAM为存储引擎。
特点:
-
- 应用范围小。表级锁限制了读/写的性能。
- 通常用于只读或读为主的工作。
- 支持表级锁(插入或更新时会锁表)。不支持事务。
- 拥有较高的增(insert)与查(select)的速度。
- 存储了表的行数(count速度更快)。
- 当指定主键时,插入顺序与查询顺序是一致的。
表级锁:操作数据库时,将整个表都锁柱,不能操作表内任何数据;
行级锁:操作数据库时,将整行数据锁住,不能错做被锁住的行内数据;
11) InnoDB:
MySQL5.7的默认引擎。InnoDB是一个事务安全的(与ACID兼容),使得MySQL默认引擎具有提交、回滚和崩溃恢复功能保护用户数据。
InnoDB行级锁和Oracle的风格一致。
特点:
-
- 支持事务、支持外键,故数据的完整性、一致性更高;
- 支持行级锁和表级锁;
- 支持读写并发,写不阻塞读(MVCC);
- 特殊的索引存放方式,可减少io,提升查询效率;
- 当指定主键时,插入顺序与查询顺序不一致;插入数据时,InnoDB会根据主键进行排序;
用于:经常更新的表,存在并发读写或有事务处理的业务系统。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)