П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 178175 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 75630 раз(а).

Учебник HTML.
Просмотров 74102 раз(а).

Руководство по PHP5.
Просмотров 45037 раз(а).

Хостинг через призму DNS.
Просмотров 51969 раз(а).

Подборка текстов стандартных документов.
Просмотров 45133 раз(а).

Учебник PHP - Самоучитель
Просмотров 51364 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51819 раз(а).

Внешние атаки...
Просмотров 41949 раз(а).

Учебник PHP.
Просмотров 37300 раз(а).

SSI в примерах.
Просмотров 27857 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 7. Типы таблиц MySQL
Пред.     След.

7.5. Таблицы InnoDB
7.5.8. Транзакционная модель InnoDB

7.5.8.6. Пример работы согласованного чтения в InnoDB

Допустим, вы используете уровень изоляции, установленый по умолчанию - 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;
4УM4УM4УM4УM4
| 1 | 2 |
4УM4УM4УM4УM4

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

Чтобы увидеть "самое свежее" состояние базы данных, необходимо использовать чтение с блокировкой:

SELECT * FROM t LOCK IN SHARE MODE;

Назад Начало Главы Начало Раздела Начало Подраздела Вперед

Пред. Глава След. Глава
Глава 6. Справочник по языку MySQL Начало Книги Глава 8. Интерфейсы для MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru