在我们每晚的备份过程中,我看到在执行备份时有两个文件消失了:
file has vanished: "/tmp/#sql-temptable-3ab-aca6d-316f6.MAD"
file has vanished: "/tmp/#sql-temptable-3ab-aca6d-316f6.MAI"
这让我怀疑为什么这两个文件一开始就在那里!在我通过网络搜索时,似乎这些 .MAD 和 .MAI 文件仅在执行 ALTER 或 CREATE 查询时创建。
真的吗?或者其他查询(比如一些优化搜索、连接或其他类似的查询)也可以创建这些文件吗?临时文件是否会从其他查询创建,然后 ALTER/CREATE 具有相同的文件结尾?
我怀疑是因为备份是在夜间运行的,当时没有人在数据库上工作,所以那时没有人会运行 ALTER/CREATE 查询,而 mysqldump 不会运行这些查询。
不,可以出于多种原因创建 MAD 和 MAI 临时文件,包括出于任何原因需要磁盘临时表的普通 SELECT 查询。隐式临时表在查询结束时立即删除,而显式临时表在会话结束时删除。
仅在内存中创建足够小的临时表,否则使用磁盘。
MAD 和 MAI 文件后缀是 Aria 存储引擎使用的后缀,这是目前磁盘临时表的默认选择。(之前是MyISAM。)
请参阅MariaDB 知识库 - Aria 系统变量:aria_used_for_temp_tables
资料来源:MariaDB 知识库:aria_chk