Страница 1 из 1

MariaDB и тразакции

Добавлено: 2012-06-13 10:55:55
Gamerman
Использую тип Aria. Хочу сделать так, что пока не будет COMMIT, чтобы другие процессы ничего не видели из изменений. И если отвалилась сессия, то чтобы ничего не сохранилось.
Делаю так:

Код: Выделить всё

SET AUTOCOMMIT=0;
START TRANSACTION;
insert into logs set username='3333333';
Но другая сессия уже видит эти изменения. Что еще нужно сделать и работает ли оно в принципе?

Re: MariaDB и тразакции

Добавлено: 2012-06-15 11:38:34
Gamerman
http://linux.yaroslavl.ru/docs/www/mysq ... ad_example
Допустим, вы используете уровень изоляции, установленый по умолчанию - REPEATABLE READ. При выполнении согласованного чтения (т.е. обычного оператора SELECT) InnoDB определяет для транзакции момент времени, по состоянию на который запросу будет предоставляться информация из базы данных. Таким образом, если транзакция удаляет строку и фиксирует это изменение после назначенного момента времени, то вы не увидите, что строка была удалена. Это справедливо также для вставок и обновлений.

Чтобы такой момент времени ``передвинуть вперед'', нужно зафиксировать транзакцию, а затем выполнить новую команду SELECT.

Это называется многовариантным контролем совпадений.

Пользователь A Пользователь B

SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;

время
| SELECT * FROM t;
| пустой набор данных
| INSERT INTO t VALUES (1, 2);
|
v SELECT * FROM t;
пустой набор данных
COMMIT;
SELECT * FROM t;
пустой набор данных;

COMMIT;

SELECT * FROM t;
---------------------
| 1 | 2 |
---------------------

Таким образом, пользователь A увидит строку, вставленную пользователем B только после того, как B зафиксирует вставку, и A зафиксирует свою собственную транзакцию, чтобы момент времени передвинулся на позицию, находящуюся после фиксации, произведенной пользователем B.
А у меня второй пользователь видит сразу данные.

Re: MariaDB и тразакции

Добавлено: 2012-06-19 6:35:14
FiL
A то, что у тебя Aria, а в куске хелпа, что ты привел InnoDB тебя не смущает?

Re: MariaDB и тразакции

Добавлено: 2012-06-19 9:07:33
Gamerman
Чесно говоря смущает. Но так как встречал, что Ария поддерживает транзакции, то я считал что такие в том числе.
Или такие она не поддерживает? Или он (движок) :)

Re: MariaDB и тразакции

Добавлено: 2012-06-20 2:52:16
FiL
Я MariaDB не юзал. Судя по описанию движка Aria (я, правда, весьма вскольз просмотрел доки) нихрена он не поддерживает транзакций.

Re: MariaDB и тразакции

Добавлено: 2012-06-20 10:55:56
Gamerman
У меня сложилось мнение аналогичное.