Связанный сервер MySQL зависает при вставке

Связанный сервер MySQL зависает при вставке

Я запускаю задачу каждые 5 минут на MS SQL Server 2008, которая ссылается на MySQL на другом сервере в сети. Это работает, вероятно, 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

Первый выведет список запущенных процессов, каков статус вашего запроса? Что он говорит, что ожидает. Второй поможет вам найти, если у вас есть проблема взаимоблокировки.

Связанный контент