Может оператор COMMIT (в SQL) когда-нибудь перестал работать? Как?

Если у вас есть собственный класс даты, вы должны отличить его от встроенного класса Date. то почему вы создали свой собственный. Что-то вроде ImmutableDate или BetterDate или NanoDate, даже MyDate укажет, почему у вас есть свой собственный класс даты. В этом случае они будут иметь уникальное имя.

25
задан Russ 18 October 2010 в 14:30
поделиться

4 ответа

COMMIT может завершиться ошибкой. Возможно, у вас было достаточно ресурсов для регистрации всех изменений, которые вы хотели бы внести, но не хватало ресурсов для фактической реализации этих изменений.

И это не учитывая другие причины, по которым он может потерпеть неудачу:

  1. Само изменение может не соответствовать ограничениям базы данных.

  2. Потеря мощности мешает завершению.

  3. Уровень запрошенного параллелизма выбора может запретить обновление (например, курсоры обновляют измененную таблицу).

  4. Фиксация может истечь или быть на соединении, которое истекло из-за проблем с голоданием.

  5. Сетевое соединение между клиентом и базой данных может быть потеряно.

И все другие «простые» причины, которые не в моей голове.

16
ответ дан Edwin Buck 28 November 2019 в 21:08
поделиться

Конечно.

В многопользовательской среде COMMIT может завершиться сбоем из-за изменений со стороны других пользователей (например, ваш COMMIT нарушит ссылочное ограничение при применении к текущей текущей базе данных ...).

Томас

5
ответ дан Thomas Weller 28 November 2019 в 21:08
поделиться

Один очень простой и часто упускаемый из виду пункт: аппаратный сбой. Фиксация может закончиться неудачей, если основной сервер умирает. Это может быть диск, процессор, память или даже сеть.

Транзакция может потерпеть неудачу, если она никогда не получит одобрения от мастера (по ряду причин).

4
ответ дан NotMe 28 November 2019 в 21:08
поделиться

Независимо от того, насколько чудесно может быть спроектирована система, будет вероятность того, что коммит попадет в ситуацию, когда невозможно узнать, успешен ли он или нет. В некоторых случаях это может не иметь значения (например, если жесткий диск, содержащий базу данных, превращается в кучу шлака, может быть невозможно определить, была ли успешна фиксация до того, как это произошло, но это не имело бы никакого значения); в других случаях, однако, это может быть проблемой. Особенно в системах распределенных баз данных, если сбой соединения происходит в нужное время во время фиксации, обе стороны могут быть уверены в том, ожидает ли другая сторона фиксации или отката.

1
ответ дан MarredCheese 28 November 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: