Почему откат данных MySQL mariadb без причины? - PullRequest
0 голосов
/ 02 января 2019

После многократного использования серверов MySQL на другом оборудовании, например на ноутбуках с ОС Windows, в очень редких случаях данные возвращаются к предыдущим транзакциям. Алгоритм в целом работает нормально в тысячах транзакций с разными клиентами, но что-то происходит в 0,01% случаев, когда закрытие приложения и освобождение памяти данных последней 4 или 10 транзакции происходит откат. Приложение является настольным и разрабатывалось с использованием .net и библиотеки MySQL и бесплатной версии mariadb 10.2 на станции localhost. При неудачной фиксации происходит повторная попытка. Возможно ли, что некоторые транзакции сохраняют данные частично после ошибки, а транзакция не закрывается? Какова причина сбоя фиксации ???, или, возможно, сбой жесткого диска, или проблема Windows. ??. Если отчет показывает данные, значит, коммит работает, но в тех случаях, когда закрытие данных приложения является откатом ??? Зачем ??? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 03 января 2019

Есть много причин, казалось бы, случайных ROLLBACKs.

Проверять ошибки после каждого оператора в транзакции и после COMMIT. (Ошибки при фиксации, вероятно, возникают только для кластеризации на основе Galera и групповой репликации. Но все равно тестируйте.)

При возникновении ошибки попробуйте захватить SHOW ENGINE INNODB STATUS;. Включите innodb_print_all_deadlocks, затем посмотрите в журнале.

Между тем, вы можете описать транзакцию? А еще лучше покажите нам задействованный SQL.

...