данных и появился вопрос по транзакциям 😄
Так вот собственно #вопрос: Предположим юзер закончил написывать изменения в транзакции, отдал команду commit транзакции и началась собственно сама процедура commit транзакции. Вот база данных записывает все ключи и значения в файл бд. Вот записались все значения и ключи транзакции и с этого момента у меня база консистентна, т.е. можно считать, что транзакция выполнилась успешно, и перед тем как обрадовать юзера о завершенности транзакции компухтер ломается до того, как был оповещен юзер об успешном окончании транзакции. При последующем восстановлении рабочего состояни бд юзер должен увидеть в базе успешное завершение транзакции и новые значения или же такая транзакция все таки должна считаться не завершонной и ее нужно откатить до состояния перед стартом транзакции? 😊
1. А как сама СУБД-то узнает о том, что юзер не был оповещён об успешном окончании транзакции? ;) 2. На самом деле, если бы она как-то знала и могла бы откатить до начала работы — откат в принципе допустим (но непрактичен).
1. Ну кстати да, чот я об этом и не подумал)) 2. Т.е. грубо говоря, чем больше СУБД закомитит транзакций, которым был вызван Commit, даже и особенно при сбое самой СУБД или сбое компьютера с этой самой СУБД, тем круче эта самая СУБД? Даже и особенно, если это произойдет при инициализации и восстановлении после сбоя? Я так понимаю это в какой-то степени даже повышает Durability?
Не знаю насчёт "круче", но так делают практически все — потому что это проще и допустимо. Ну и транзакций сохраняется больше, не без этого. ;)
Ну супер! Это вообще замечательно! 👍 Спасибо большое за ответ 🤗
Обсуждают сегодня