1.Mysql 插入数据 阻塞

一、问题

问题描述:
调试spark程序时,控制台打印阻塞在插入数据那
debug发现程序阻塞在saveAndFlush()

程序功能描述:
spark wordcount 计算结果写入mysql

二、解决

1.打开mysql命令行查看了下进程列表

show processlist;

发现要插入的表存在7个sleep的进程,且Time大于2000

2.生成结束进程命令

注意:USER和db改成自己对应的

SELECT GROUP_CONCAT(CONCAT('kill ',id) SEPARATOR '; ') AS cmd FROM information_schema.processlist
WHERE USER='root'
AND command='Sleep'
AND db='test';

生成的命令大致如下:
kill 120568;kill 120568;

执行上面生成的杀死进程的命令
再去idea运行程序时,写入就丝滑的很了

3.原理

调试spark程序时,多次中断程序,导致mysql中启动了多个针对目标表的进程。
后面再启动程序时,由于mysql中前面的进程还在等待,所以当前进程只能乖乖排队。
解决思路就是,找出要写入的所有库所有等待(sleep状态)的进程,杀掉即可。

猜你喜欢

转载自blog.csdn.net/qq_39945938/article/details/107919685