链接的 MySQL 服务器在插入时挂起

链接的 MySQL 服务器在插入时挂起

我在 MS SQL Server 2008 上每 5 分钟运行一次任务,该任务链接到网络中另一台服务器上的 MySQL。它大概有 80% 的时间可以工作。剩余的 20% 会导致 MySQL 挂起,因此service mysql restart需要 a。

以下是每 5 分钟运行一次的查询的一些信息:

  • ~32,000 行和 25 列
  • 引擎= MyISAM
  • 查询(从 SQL Server 2008 运行)=INSERT INTO MYSQLINTRANET...segments_temp SELECT * FROM ProjectTracking.dbo.segments;
  • 行故障似乎是随机的
  • 错误日志为空

是否有可能ProjectTracking.dbo.segments被锁定而导致挂起?

错误日志中没有报告任何错误,我该怎么办?

答案1

我本来想把这个留作注释,但我想引用一些代码,所以我在这里引用。我首先尝试追踪锁发生的位置。下次你遇到锁时,收集一些数据。在 MS SQL 服务器上运行以下命令:

USE master
select text,wait_time,blocking_session_id AS "Block",
percent_complete, * from sys.dm_exec_requests 
CROSS APPLY sys.dm_exec_sql_text(sql_handle)  AS s2 order by start_time asc

分析返回结果并查看状态。是否被阻塞?是否正在等待远程返回数据?

在 mySQL 服务器上运行:

show full processlist;

也:

SHOW ENGINE INNODB STATUS

第一个会列出正在运行的进程,你的查询状态如何?它说正在等待什么。第二个会帮助你发现是否存在死锁问题。

相关内容