有没有办法在MySQL中修改与哪个基表有关的临时表?

问题描述:

我在MySQL中一次更改10个表。所有查询从10个不同的会话并行运行。有没有办法在MySQL中修改与哪个基表有关的临时表?

有像数据目录中创建临时表:

#sql-ib661-1873552283.ibd 
#sql-ib668-1873552287.ibd 
#sql-ib689-1873552292.ibd 
#sql-ib685-1873552291.ibd 
#sql-ib7856-1873552274.ibd 
#sql-ib657-1873552278.ibd 
#sql-ib586-1873552272.ibd 
#sql-ib669-1873552288.ibd 
#sql-ib626-1873552276.ibd 
#sql-ib667-1873552286.ibd 

我们怎样才能检查其临时文件属于哪个表的alter命令? 因为我正在从这些临时表的大小检查alter命令的进度。

是否有任何映射或命名约定来检查?

+1

我怀疑第一个数字是显示在SHOW PROCESSLIST中的进程ID – Barmar

+0

只需检查一下,这不是进程ID。别的东西。 –

+0

@Barmar是内部表的ID,请参阅https://twindb.com/temporary-table-naming-scheme-in-5-6-and-before/ – Shadow

如果您有mysql v5.7.9或更高版本,那么您可以使用sys.processlist or sys.session视图'progress'字段来监控长时间运行语句的进度。

假设启用了所需的工具和使用者,这些视图的进度列显示了支持进度报告的阶段所完成工作的百分比。

+0

哪些仪器需要启用alter命令监视? 我正在修改一列.. –

+0

关于progress字段的链接文档告诉你。 – Shadow