第46问:MySQL 使用的文件句柄突增, 该如何诊断

本文探讨了MySQL中文件句柄数量激增的原因,重点集中在HashJoin操作上。通过perf工具追踪系统调用,结合MySQLWorkLog理解设计,还介绍了performance_schema用于查看文件实例。适合深入理解数据库性能优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 使用的文件句柄数 突然增加, 我们该如何诊断

实验

我们接着宽油起一个数据库:

翻倍法造表 a :

将 a 表造的大一点:

给 a 表追加一列:

再造个表 b :

让我们来下一个 SQL :

在 SQL 执行的过程中, 观察 MySQL 的文件句柄数, 发现文件句柄在不断上升:

现在我们来诊断 为什么 MySQL 的文件句柄数会上升.

我们动用 perf , 来追踪 打开句柄的系统调用

然后我们调用 perf script , 经过一段等待后我们会得到不少结果, 我们摘取其中片段:

我们可以看到, 句柄的使用与 Hash Jo in 相关: Hash Join 过程中, 需要将 Probe Row 写入磁盘.

我们查找一下 MySQL Work Log (https://dev.mysql.com/worklog/task/?id=2241), 来理解一下 Hash Join 的设计:

赠送章节

我们还可以通过 performance_schema 来查看文件句柄的使用:

select * from performance_schema.file_instances;

输出如下:


我们可以看到这些句柄与 Hash Join 有关, 但具体与哪个步骤有关, 我们还是要通过 perf 才能分析.


关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值