Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 08.09.2014
Сообщений: 147

Задача на транзакции

13.12.2021, 10:41. Показов 1372. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, есть такая задача со степика, ломаю голову уже долгое время. Находится она на курсе Погружение в СУБД.
Сейчас напишу смысл задачи:

Для успешного решения задачи необходимо, разумеется, понимать, как работают транзакции на разных уровнях изоляции и вспомнить основы теории вероятностей, а именно определение математического ожидания дискретной случайной величины. И быть очень внимательным.

Итак, задача.
Алиса хочет последовательно выполнить N транзакций вида
SQL
1
2
3
4
5
6
7
BEGIN ISOLATION LEVEL READ COMMITTED;
SELECT VALUE FROM T WHERE id = 2 FOR UPDATE;
SELECT VALUE FROM T WHERE id = 3 FOR UPDATE;
SELECT VALUE FROM T WHERE id = 4 FOR UPDATE;
SELECT VALUE FROM T WHERE id = 1 FOR UPDATE;
UPDATE T SET VALUE = VALUE + 10 WHERE id BETWEEN 1 AND 4;
COMMIT;
Если транзакция по каким-либо причинам обрывается, то Алиса немедленно повторяет её заново и делает так до тех пор, пока транзакция не закончится успешным подтверждением.

Одновременно с транзакцией Алисы с вероятностью p запускается транзакция Болванщика, которая выглядит так:

SQL
1
2
3
4
5
BEGIN ISOLATION LEVEL READ COMMITTED;
SELECT VALUE FROM T WHERE id = 1 FOR UPDATE;
SELECT inc INTO _inc FROM R WHERE id = 1;
UPDATE T SET VALUE = VALUE + _inc WHERE id=1;
COMMIT;
Транзакции Алисы и Болванщика выполняются параллельно на разных процессорах, без каких-либо не указанных в задаче задержек и накладных расходов.

В нашей воображаемой базе данных каждый оператор SELECT FOR UPDATE выполняется за 2 миллисекунды, простой оператор SELECT выполняется за 1 миллисекунду, а оператор UPDATE выполняется за 10 миллисекунд. Если оператор ждет получения блокировки, то мы считаем, что он начинает выполняться с момента её получения. Если оператор по каким-то причинам оборвался, то время выполнения конкретно этого оператора мы считаем равным нулю. Все использующиеся таблицы и записи в нашей БД есть.

Алиса заметила, что Болванщик запускает свои транзакции не так уж и часто, и ей пришла в голову мысль о том, что замена уровня изоляции в её транзакции на REPEATABLE READ и всех операторов SELECT FOR UPDATE в её транзакции на простые SELECT несколько уменьшит время выполнения её транзакции, что для неё важно. Кроме того, у неё есть договорённость с Болванщиком о том, что если Алиса повторяет оборвавшуюся транзакцию, то в то время, пока она повторяется, Болванщик гарантированно ничего не будет делать.

Болванщик может сообщить Алисе значение вероятности p. Подскажите Алисе, при каких p имеет смысл воспользоваться уровнем REPEATABLE READ.

Запись ответа

В ответе должен быть записан интервал значений p, при которых матожидание времени, прошедшего от начала до успешного подтверждения транзакции Алисы с уровнем изоляции REPEATABLE READ будет строго меньше матожидания времени от начала до успешного выполнения транзакции с уровнем изоляции READ COMMITTED.

Интервал должен быть записан в виде (полу)открытого или закрытого отрезка. Границы отрезка должны быть целыми числами или несократимыми рациональными дробями. Границы должны быть отделены друг от друга запятой. Если значение границы входит в отрезок (то есть если он с этой стороны закрытый) то скобка должна быть квадратной, а если не входит, то круглой. Пробелов в ответе быть не должно. Примеры валидных ответов:

-- от нуля до единицы включительно
[0,1]
-- от нуля до единицы не включая 0 и 1
(0,1)
[1/2,1)
(1/3,2]

Примеры невалидных ответов:

-- пробел после запятой
[0, 1]
-- скобки не круглые и не квадратные
{0,1}
-- не рациональное число
[0.5,1)
-- дробь сократимая
(2/6,2]
В задаче необходимо указать интервалы.
Есть комментарий, который описывает формулу нахождения числа p:
"Рассчитываете время подтверждения транзакции Алисы в случае, если Болванщик не запускал скрипт (R1 и C1 для REPEATABLE READ и READ COMMITTED соотвественно) и в случае, если Болванщик запустил свой скрипт (аналогично R2 и C2). Полученные значения вставить в формулу C1 * (1 - p) + C2 * p = R1 * (1 - p) + R2 * p".

Как найти эти коэффициенты C1, C2, R1, R2
C1 * (1 - p) + C2 * p = R1 * (1 - p) + R2 * p
как найти коэффициенты C1 и C2, R1 и R2 ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2021, 10:41
Ответы с готовыми решениями:

Вместо данных текущей транзакции приходят данные предыдущей транзакции. Sandbox Paypal
Здравствуйте! Проблема в том что вместо данных текущей транзакции, IPN с paypal приходят данные предыдущей транзакции. Например я...

Транзакции
Есть две таблицы , в первой содержаться имена(Ваня, Андрей, Иван) , во второй их лицевой счет, как сделать так чтобы при изменении лицевого...

Транзакции
Нужна помощь с разработкой тестовой таблицы в 1 млн. записей и с последующим писателем бесконечного цикла. Уже тема была в заказах, но...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2021, 10:41
Помогаю со студенческими работами здесь

Транзакции
Вчерашняя тема пропала, а проблема у меня осталась В процедуре, которая вызывается по кнопке, делаю НачатьТранзакцию() Если...

Транзакции
Приведите пожалуйста пример создания своей транзакции в коде, но не так, чтобы она с бд работала а просто допустим с функцией в коде

Транзакции
using (System.Transactions.TransactionScope transactionScope = new...

Транзакции и WHERE
Здравствуйте. Немного не разобрался с транзакциями, помогите уяснить один момент. Допустим у нас есть два запроса, которые...

Транзакции
есть таблица, из двух полей (id - уникальный ключ, идентификатор пользователя и summ - количество денег) Подскажите как правильно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru