我在 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
第一個將列出正在運行的進程,您的查詢的狀態是什麼?它說它在等什麼。第二個將幫助您發現是否遇到死鎖問題。