郑粥粥

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

mysql入门记录1---执行sql的过程

一、结构

大体可以分为 Server 层和存储引擎层两部分

 1.server层:又分为连接器、分析器、优化器、执行器等。除了直接查数据部分的功能,其他功能都是在这层实现的,比如内置函数、存储过程、触发器、视      图等。

2.存储引擎:主要是用来存储数据,提供读写接口,InnoDB从MySQL 5.5.5 版本开始成为了默认存储引擎。

二、短链接和长链接

1.mysql客户端默认断开时间是 wait_timeout 控制的,默认值是 8 小时

2.短连接:一般是指查询后马上断开

3.长连接:只要一段时间内,客户端有请求,那么就还是用同一个连接

连接的动作是非常复杂,开销也比较大的,所以一般建议使用长连接。但是长连接太多必定会占用太多内存,导致OOM。解决办法有两个,定期断开长连接,另外可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection 来重新初始化连接资源。

 三、查缓存

mysq也有缓存,查询时候先从缓存里面查,查不到再从存储的数据查。

之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询的语句,value 是查询的结果。

一般不建议用 ,因为只要有对一个表的更新,这个表上所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。

不使用缓存的写法:可以将参数 query_cache_type 设置成 DEMAND,这样对于默认的 SQL 语句都不使用查询缓存。

使用缓存的写法:确定要使用查询缓存的语句,可以用 SQL_CACHE 显式指定

如:select SQL_CACHE id from Student ;

ps:MySQL 8.0 版本直接将查询缓存的整块功能删掉了

四、执行过程

分析器:分析语法是否正确,分析是什么操作,是哪个表,哪一列等等

优化器:优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序

执行器:根据表的引擎定义,去使用这个引擎提供的接口

posted on   郑粥粥  阅读(40)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示