#php #mysql #database #transactions #computer-science
#php #mysql #База данных #транзакции #информатика
Вопрос:
Не мог бы кто-нибудь, пожалуйста, объяснить мне в ясных терминах, что такое последовательная эквивалентность? Я просмотрел, но, похоже, не могу найти четкого определения того, что это на самом деле означает?
Мое текущее понимание заключается в том, что порядок транзакций не имеет значения, поскольку они серийно эквивалентны и результат тот же? Если это правильно, пожалуйста, объясните, что это на самом деле означает.
Комментарии:
1. Более того, если вы можете полностью разделить две чередующиеся транзакции, и конечный результат будет таким же, как при их чередовании, они будут серийно эквивалентны. Порядок операций по-прежнему актуален, поэтому вы не можете изменить порядок транзакций, только время, в которое происходят отдельные компоненты.
2. Ах, я понимаю, значит, на самом деле это связано не с порядком транзакций, а с порядком, в котором выполняется содержимое транзакции?
3. Да. Изменение порядка транзакции, вероятно, повлияет на ее результаты. например … обновление баланса банковского счета без предварительного извлечения баланса, чтобы убедиться, что на нем достаточно средств.
4. Итак, это похоже на это: если у вас есть 2 транзакции, и содержимое объединено, а выходные данные такие же, как если бы они были разделены, тогда они серийно эквивалентны?
Ответ №1:
Один из них должен это сделать:
Используется в технологии РАСПРЕДЕЛЕННЫХ СИСТЕМ для описания эффекта, который ряд параллельных или вложенных ТРАНЗАКЦИЙ оказывает на состояние такой системы. Когда выполняются такие транзакции, их эффект считается последовательным, если состояние системы такое же, как если бы они выполнялись последовательно.
Две транзакции являются последовательными, если все операции в одной транзакции предшествуют операциям в другой.
Источник: http://www.it.uom.gr/teaching/distrubutedSite/dist-sys/ds-node220.html
Мы говорим, что чередование двух блоков последовательно эквивалентно, если результат эквивалентен выполнению, в котором один блок был выполнен полностью перед другим.
Источник: http://www.itu.dk/courses/INP/E2001/Materiale/Concurrency/www/p3.php
Кроме того, взгляните на нижнюю часть страницы 6 и далее этого PDF-документа: http://www.it.uu.se/edu/course/homepage/distsys/Slides/lecture7.pdf
Особенно взгляните на примеры, приведенные в документе PDF и по третьей ссылке.
Комментарии:
1. Итак, это примерно так: если у вас есть 2 транзакции, и содержимое объединено, а выходные данные такие же, как если бы они были разделены, тогда они были серийно эквивалентны?
Ответ №2:
Да, вы правы.Вызов, запись / write и чтение / write конфликтуют. Операции чтения не конфликтуют. Чтобы две транзакции были последовательно эквивалентны, все пары конфликтующих операций должны выполняться в одинаковом порядке на всех объектах, к которым они оба обращаются. Каждая транзакция должна записывать один и тот же объект данных сразу после его чтения, или обновление объекта данных должно выполняться перед обращением к другой транзакции.
Комментарии:
1. Можете ли вы привести какой-нибудь пример в реальном времени.