有没有办法在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命令的进度。
是否有任何映射或命名约定来检查?
答
如果您有mysql v5.7.9或更高版本,那么您可以使用sys.processlist or sys.session视图'progress'字段来监控长时间运行语句的进度。
假设启用了所需的工具和使用者,这些视图的进度列显示了支持进度报告的阶段所完成工作的百分比。
+0
哪些仪器需要启用alter命令监视? 我正在修改一列.. –
+0
关于progress字段的链接文档告诉你。 – Shadow
我怀疑第一个数字是显示在SHOW PROCESSLIST中的进程ID – Barmar
只需检查一下,这不是进程ID。别的东西。 –
@Barmar是内部表的ID,请参阅https://twindb.com/temporary-table-naming-scheme-in-5-6-and-before/ – Shadow