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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





Глава 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