StarActive 发表于 2023-5-17 18:13:15

mysql做hive元数据库,hive在建表时mysql报Waiting for table metadata...

本帖最后由 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本身服务的问题


yejr 发表于 2023-5-18 13:38:59

在8.0版本中,遇到MDL锁等待时,执行下面SQL查看详情
select * from sys.schema_table_lock_waits;

如果是行锁等待,执行下面的SQL查看
innodb_lock_waits

fander 发表于 2023-6-16 08:46:01

alter 这种 DDL语句是要求,当前DDL这张表没有人在用,你被堵了就是有人在用。找出哪个线程在用,然后kill 掉他,你的DDL就可以跑了。如果你的环境是开发环境,你可以用有杀错没放过的方法,把这个DDL语句和其他系统线程之外的所有链接都kill了,就不堵了。
页: [1]
查看完整版本: mysql做hive元数据库,hive在建表时mysql报Waiting for table metadata...