Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет.
Всегда использовал только MyIsam.
Но давно назрела необходимость (в логике приложения) откатывать предыдущие изменения
при каком-то всплывшем условии. На сколько я понял это возможно делать на автомате только в Innodb.
Просьба указать ссылки на как можно полное сравнение движков MyIsam и Innodb или на детальнейший
обзор функционала Innodb (желательно посвежее).
То что нарыл в интернет - как-то поверхностно, только самое очевидное (куски оф.документации).
Нужны например такие ответы на вопросы: можно ли в Innodb блокировать таблицу целиком, как эта блокировка снимается при использовании PHP (имеется ввиду в конце выполнения скрипта) и т.д.
Вопросов конечно куча - поэтому нужно узнать все тонкости.
Неактивен
По innodb есть целый раздел в доке http://dev.mysql.com/doc/refman/5.5/en/ … gines.html
Целиком блокировать можно с помощью явной блокировки http://dev.mysql.com/doc/refman/5.5/en/lock-tables.html
Неактивен
Правильно ли я понял:
1. чтобы блокировка (разблокировка) таблиц не закрыла трансакцию
нужно все манипуляции трансакции проводить между блокировкой и разблокировкой таблиц?
2. и если объявить блокировку таблиц внутри трансакции будет commit или просто оннулирование самой трансакции?
и все-таки хотелось бы увидесь как можно более подробный сравнительный обзор (ссылку)
между MyIsam и Innodb (Xtradb).
Отредактированно ZicoRio (23.04.2012 17:58:10)
Неактивен
Максимально подробного обзора нет, потому что по объему он бы был порядка главы из руководства про InnoDB целиком.
Основные отличия InnoDB от MyISAM (помимо построчной блокировки):
- поддержка транзакций
(остальные отличия касаются, в основном, администрирования)
- многоуровневая структура данных (между клиентом и данными таблиц есть еще журналы InnoDB)
- в память (InnoDB buffer pool) для более быстрого повторного доступа помещаются не только индексы, но и данные (в отличие от MyISAM, который помещает в память только индексы)
- хранение данных "одним куском" (по умолчанию все данные хранятся в одном файле; можно настроить так, чтобы каждая таблица была в отдельном физическом файле; при восстановлении данных, однако, иметь только этот файл будет недостаточно)
как эта блокировка снимается при использовании PHP (имеется ввиду в конце выполнения скрипта)
PHP в конце скрипта закрывает соединение, блокировка снимается автоматически.
Блокировки и транзакции пересекаться не должны. Одна перед началом себя прекращает другую (блокировка commit'ит транзакцию, транзакция снимает блокировку; подробнее см. http://dev.mysql.com/doc/refman/5.0/en/ … tions.html)
Неактивен