首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是mariadb临时文件,如/tmp/MYXFhjiU

什么是mariadb临时文件,如/tmp/MYXFhjiU
EN

Stack Overflow用户
提问于 2021-10-14 13:14:35
回答 1查看 46关注 0票数 2

所以我的数据库冻结了,甚至在重启后它也不能平滑(它平滑了几秒钟,然后又停滞了)。

iotop报告高写入( 300~ 500mb/s的峰值),我已经跟踪到写入/tmp/的系统调用。现在有一些以#sql_386a_0.MAI格式写入的临时表,但我感兴趣的是以/tmp/MY*格式从未完成写入的其他文件,例如:

这是一个从子线程"write(248,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\00022"...,32768)“(以32或64 kb块编写)的系统调用

这些文件本身并不存在于我所能收集到的文件夹中,但是在夜间导入数据之后,系统会挂起一两个小时,并且具有极高的写入,甚至不重新启动服务器也有帮助

所以我的问题是这些文件是什么

EN

回答 1

Stack Overflow用户

发布于 2021-10-14 17:54:35

我发现它们是filesort文件;如果sort_buffer_size增加,这些文件就会停止。

File filesort文件是mariadb在执行ORDER BY查询时创建的文件,该查询占用的内存量大于sort_buffer_size设置的内存量。如果你不更改mariadb配置中的默认tmpdir设置,通常是/tmp目录(在不同的linux发行版上可能会有所不同,我运行debian)。

有3种文件,一种是以#开头的临时表,一种是filesort文件,另一种是以"ib“开头的文件。不过,我不知道它们是什么。

如果你的查询(像我的一样)是数百万行的大集合,需要复杂的连接和多顺序排序,那么这些文件写入可能会失控,问题是不是每个调试工具都能看到你正在写入大量数据,因为这些文件是使用unix的技巧编写的:

文件被创建,然后立即解除链接(类似于删除),但是进程(在本例中是mariadb)仍然有一个描述符/文件句柄,并且可以对其进行读/写

我的服务器上的问题是,ssd速度足够快,一开始没有引起关注,但当vm开始因为吞吐量而对ssd进行硬性节流时,服务器几乎陷入停顿,所以是的……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69571388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档