如何查看MySQL中用户创建的临时表大小?
查看MySQL临时表大小的解决方法
因为MySQL临时表是会话级别的私有对象,不会被记录到information_schema.TABLES系统表或SHOW TABLE STATUS的结果中,所以你之前的方法无法获取到它的大小。针对不同存储引擎的临时表,可以用以下方法查看:
1. MyISAM临时表
MyISAM临时表会在MySQL的临时目录生成物理文件,你可以通过以下步骤查看:
- 先执行
SHOW VARIABLES LIKE 'tmpdir';获取临时文件存储路径 - 前往该目录,找到以
#sql_开头的文件:.MYD是数据文件,.MYI是索引文件,将两个文件的大小相加就是临时表的总大小
2. InnoDB临时表
方法一:查询INNODB_TEMP_TABLE_INFO视图(MySQL 5.7+)
执行以下SQL可以直接获取当前会话的InnoDB临时表信息,其中SPACE字段代表表空间占用的页数(InnoDB默认页大小为16KB),计算后就能得到表的大致大小:
SELECT NAME AS temp_table_name, N_COLS AS column_count, SPACE * 16 / 1024 AS size_in_KB, SPACE * 16 / 1024 / 1024 AS size_in_MB FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO;
方法二:查看InnoDB引擎状态
执行SHOW ENGINE INNODB STATUS;,在输出结果中找到Temp table相关段落,里面会包含临时表的大小、使用的空间等细节信息。
内容的提问来源于stack exchange,提问作者Ankit Prakash
相关产品推荐
相关产品推荐

