MS SQL Server 2008 で、ネットワーク内の別のサーバー上の MySQL にリンクするタスクを 5 分ごとに実行しています。おそらく 80% の確率で動作します。残りの 20% では MySQL がハングし、 がservice mysql restart
必要になります。
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
最初は実行中のプロセスがリストされ、クエリのステータスはどうなっているか、何を待機しているかが表示されます。2 番目はデッドロックの問題が発生しているかどうかを確認するのに役立ちます。