Тайм-ауты MySQL во время коммита - PullRequest
1 голос
/ 28 октября 2010

У нас загадочные проблемы с сетью в MySQL. Простой запрос на обновление (обновление одной строки с использованием индекса) обычно выполняется немедленно, а иногда (скажем, 1 на 1000 раз) происходит сбой с таймаутом. То же самое с простым запросом вставки. База данных не перегружена. Мы подозреваем проблемы с сетью и ищем решение, поэтому, если у кого-то возникли проблемы такого рода, я бы определенно об этом подумал.

Теперь к главному. Что еще хуже, запрос вставки не выполняется во время фиксации транзакции (у нас есть несколько похожих запросов, но это происходит даже в самом простом - просто одна вставка в одну таблицу, без блокировок, ничего). Когда это происходит, транзакция. Коммит выдает исключение. Мы перехватываем его и предполагаем, что транзакция была отменена, и снова пытаемся вставить данные.

Результат - две строки с одинаковыми данными в таблице. Какие предположения возможны в случае неудачной фиксации? Был вставлен ряд или нет? Это ошибка поведения в MySql Connector / Net или это дизайн. Любой совет (кроме проверки вручную, есть ли данные в таблице или нет)?

Спасибо заранее. Бранко

p.s. Я отправил это же сообщение на форум MySQL .NET Connector. Я прошу прощения, если это кого-то беспокоит, но я впадаю в отчаяние. O: -)

1 Ответ

0 голосов
/ 01 мая 2011

Если фиксация завершится неудачно с ошибкой в ​​сети, предположения невозможны.Я понимаю, что против этого сложно программировать, но это так;) Увеличение тайм-аута команды здесь может помочь.Но опять же, если соединение потеряно после того, как в базе данных были сделаны постоянные изменения транзакции, но клиентская сторона не получила подтверждение от сервера, состояние транзакции не определено.

...