暂无图片
mysql如何跟踪ddl语句实际是如何执行的?
我来答
分享
小北
2024-02-15
mysql如何跟踪ddl语句实际是如何执行的?

mysql如何跟踪ddl语句实际是如何执行的?

比如test表原来没有主键如下:

create table test(id int,iq int);

执行alter table test add primary key(id);后实际执行了如下操作:

create table testN (id int primary key,iq int);

insert into testN select * from test;

drop table test;

alter table testN rename to test;

请问是否有什么办法能debug或者是跟踪到底是如何执行的?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
chengang

https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

mysql DDL有三种方式。 COPY,INPLACE,INSTANT

第一种就如你上面举列的是复制表。第二,与第三种表 都是原地DDL,只是第三种更快,不加锁只在数据字典中增加信息。

暂无图片 评论
暂无图片 有用 0
打赏 0
倪宾

可以通过以下语句来查询DDL语句的执行进度:

SELECT
ec.THREAD_ID,
ec.EVENT_NAME,
ec.WORK_COMPLETED,
ec.WORK_ESTIMATED,
pt.STATE,
pt.INFO
FROM
performance_schema.events_stages_current ec
left join performance_schema.threads th on ec.thread_id = th.thread_id
left join information_schema.PROCESSLIST pt on th.PROCESSLIST_ID = pt.ID
where
pt.INFO like '%';

暂无图片 评论
暂无图片 有用 1
打赏 0
o°cboy

自己编译源码,然后开启debug模式,应该可以看到有对应的日志输出。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏