Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2021, 14:41   #1
Mihafiz
Новичок
Джуниор
 
Регистрация: 14.12.2021
Сообщений: 2
По умолчанию Задача на транзакции

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

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

Итак, задача.
Алиса хочет последовательно выполнить N транзакций вида
SQL
Выделить код

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
Выделить код

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 ?
Mihafiz вне форума Ответить с цитированием
Старый 14.12.2021, 16:34   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от Mihafiz Посмотреть сообщение
Выделить код
Откуда скопировали и зачем?
Вам задали решать, вот и решайте, в чём проблема собсвенно?
Не можете решить не решайте, идит дворником работать в Москве дефицит кадров при хорошей зарплате.
Alar вне форума Ответить с цитированием
Старый 14.12.2021, 17:02   #3
Mihafiz
Новичок
Джуниор
 
Регистрация: 14.12.2021
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
Откуда скопировали и зачем?
На степике, там же написано.

Цитата:
Сообщение от Alar Посмотреть сообщение
Вам задали решать, вот и решайте, в чём проблема собсвенно?
Проблема в том, что не понятно как решать, для этого и обратился за помощью на форум.
Цитата:
Сообщение от Alar Посмотреть сообщение
Не можете решить не решайте, идит дворником работать в Москве дефицит кадров при хорошей зарплате.
Не можете помочь в решении, не отвечайте)
Mihafiz вне форума Ответить с цитированием
Старый 14.12.2021, 17:25   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от Mihafiz Посмотреть сообщение
не отвечайте)
Девушка что ли? тогда может и зря предложил в дворники.

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вложенные транзакции tae1980 SQL, базы данных 12 16.03.2018 21:22
транзакции sem_1989 SQL, базы данных 1 23.09.2011 22:43
транзакции пауэрлифтинг БД в Delphi 0 27.05.2010 02:24
Транзакции в DLL acidlord БД в Delphi 0 28.11.2009 13:31
Транзакции и try nikmay Общие вопросы Delphi 1 30.07.2009 21:13