GreatSQL社区

搜索

[已解决] mysql做hive元数据库,hive在建表时mysql报Waiting for table metadata...

797 2 2023-5-17 18:13
本帖最后由 StarActive 于 2023-5-17 18:14 编辑

大佬们可以给个思路吗,目前不知道如何入手去排查什么原因导致的锁表



ALTER TABLE `TBLS` ADD CONSTRAINT `TBLS_FK5` FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`)
上面的sql语句是 在建(hive系统中)表时被触发的语句,紧接着在mysql上的hive元数据表被锁。hive系统那边建表卡死,因为挂在mysql上的hive元数据表被锁了。

ctrl+c 中断hive的建表操作,mysql锁就会被释放。如果hive执行建表语句后一直等待,那么在 (Time taken: 602.892 seconds) 600秒后,命令将会被执行成功。




目前该现象只出现在了mysql8.0.33
我切换到mysql5.7作为元数据库则不会出现该问题。其中的变量只有 mysql5.7 和新的mysql8.0,可以排除hive本身服务的问题


76037a78862e13ea38e0050fdf4670cd.png
全部回复(2)
yejr 2023-5-18 13:38:59
在8.0版本中,遇到MDL锁等待时,执行下面SQL查看详情
  1. select * from sys.schema_table_lock_waits;
复制代码


如果是行锁等待,执行下面的SQL查看
  1. innodb_lock_waits
复制代码
fander 2023-6-16 08:46:01
alter 这种 DDL语句是要求,当前DDL这张表没有人在用,你被堵了就是有人在用。找出哪个线程在用,然后kill 掉他,你的DDL就可以跑了。如果你的环境是开发环境,你可以用有杀错没放过的方法,把这个DDL语句和其他系统线程之外的所有链接都kill了,就不堵了。
StarActive

1

主题

0

博客

3

贡献

新手上路

Rank: 1

积分
4

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-21 21:36 , Processed in 0.020310 second(s), 15 queries , Redis On.
快速回复 返回顶部 返回列表