查看MySQL临时表 - 不在会话中

时间:2011-11-29 18:04:23

标签: mysql temp-tables

我目前正在运行一个脚本,并且认为运行时间不会太长,脚本正在修改临时表。

我知道临时表只存在于当前会话中,但无论如何都要查看它们在会话之外保存的数据吗?

原因是我想知道我的脚本将继续运行多长时间,如果我能看到临时数据,那么我就能弄清楚。

3 个答案:

答案 0 :(得分:8)

恐怕没有简单的方法可以做到这一点。

临时表将存储在mysqld的指定临时目录(通常是/ tmp)中,你会看到一组表格如下:

-rw-rw---- 1 mysql mysql     8724 Nov 29 18:09 #sqldba_5fa70c_12f1.frm
-rw-rw---- 1 mysql mysql   188408 Nov 29 18:09 #sqldba_5fa70c_12f1.MYD
-rw-rw---- 1 mysql mysql     1024 Nov 29 18:09 #sqldba_5fa70c_12f1.MYI

这是一组正常的MyISAM表定义(按上面的顺序)结构,数据和索引。

这非常hacky但是我怀疑你可以将这些表复制到你的test模式中,在表上运行修复然后查看它的内容。

如果您可以根据临时表的大小来衡量流程,那么这可能是分析正在发生的事情的一种更简单的方法。

答案 1 :(得分:1)

不可能,你可以(但是),
记录里程碑(消息,完成百分比,处理的行数)
进入临时文件,并使用tail -f log_file监控

答案 2 :(得分:0)

在MySQL 5.7中添加了一个新的INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO:http://dev.mysql.com/doc/refman/5.7/en/innodb-information-schema-temp-table-info.html

否则Percona XtraDB已暂时使用此功能:http://venublog.com/2010/02/03/show-temporary-tables/