暂无图片
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


请输入正文
提交
相关推荐
mysql能查到历史的锁等待信息吗?
回答 2
已采纳
可以借助这几个表查看informationschema.INNODBLOCKS、informationschema.INNODBLOCKWAITS、nformationschema.INNODBTRX
mysql router配置两个节点服务器,第一个节点宕机会自动切换到第二个节点,如果第一个节点恢复了,第二个节点宕机了,却不会链接到第一个节点了,请问是本身中间件不支持还是没配置对啊
回答 2
不会的。你需要的是routermgr才行
prepared statement具体是啥语句?存储过程吗?
回答 3
应该是预处理不是预编译ORACLE和PG都会把重复的SQL编译后保存在内存里,以后重复使用.开发端自然是没有必要再多次一举!
从库无法连接到主库,ERROR 2003 (HY000):111,5.7
回答 3
从你的操作上来看,没刷新权限表诶。mysql>flushprivileges;希望对你有帮助
MySQL binlog日志一般保存多久?
回答 1
已采纳
取决磁盘容量大小和mysql参数设置;showvariableslike'%expirelogsdays%';默认是0,即永不过期可以通过设置参数全局参数或者启动参数进行修改:setglobalexp
操作远端的mysql服务器用什么工具比较好?
回答 2
已采纳
市面上有很多工具。好用的如navicat、MySQLWorkbench、Dbeaver、SQLyog、HeidiSQL。这几个会用的比较多
mysql 哪个视图能查看数据库账号创建时间?
回答 6
查看数据库表的创建时间可以在informationschema中查看。
搭建主从后,备库启动复制,报错error 1396 ,' operation create user failed for 'zhang'@'%' on query default database;mysql
回答 1
在从库执行flushprivileges;再重新startslave
旧版本支持新版本新功能么
回答 1
不能
mysql 5.6.39数据库无法启动还有救吗?
回答 5
如果mysql实例都无法启动的话,确实是怀疑表空间已经损坏了。建议备份数据目录和日志目录,通过修复表空间的方式恢复。