LINUX.ORG.RU

2 транзакции параллельно в MySQL, как?


0

2

Изучаем в универе уровни изоляции транзакций, нужно смоделировать грязного чтения, неповторяемого чтения, возникновения фантомов.

Как запустить транзакции, чтобы их выполнение было близко к такому:

Начало транзакции А
Начало транзакции В
Транзакция A что-то делает с данными Data
Транзакция B что-то делает с данными Data
Конец транзакции А
Конец Транзакции В

Спасибо.

Ответ на: комментарий от sergv

sergv, да вы прям Петросян.

Для тех, кто столкнется с такой же проблемой:

Создаем файл.sh, делаем его исполняемым.
Содержимое файла следующее:

#!/bin/bash

tty -s || exec x-terminal-emulator -e "$0" "$@"

mysql -uroot < transaction1.sql &
mysql -uroot < transaction2.sql

-uroot при необходимости заменить на свою учетную запись

Чтобы быть уверенными, что transaction2.sql будет выполнятся за transaction1.sql,
можно внутри нее добавить select sleep(x), где x - задержка в секундах.

Glaciuse
() автор топика
Ответ на: комментарий от Glaciuse

sergv, да вы прям Петросян.

Что не нравится?

По первой ссылке - офф. доки по синтаксису. По второй ссылке - доки по транзакционной модели.

А параллельности выполнения можно многими способами достичь.

sergv
()
Ответ на: комментарий от sergv

Дополню себя:

Самый очевидный способ параллелить транзакции - скрипт на perl/python etc. Два хэндлера базы на две транзакции.

Преимущество - индексы и данные можно «портить» контролируемым образом.

sergv
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.