SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.04.2012 14:46:46

ZicoRio
Завсегдатай
Зарегистрирован: 30.04.2009
Сообщений: 31

Хочу попробовать Innodb

Всем привет.
Всегда использовал только MyIsam.
Но давно назрела необходимость (в логике приложения) откатывать предыдущие изменения
при каком-то всплывшем условии. На сколько я понял это возможно делать на автомате только в Innodb.
Просьба указать ссылки на как можно полное сравнение движков MyIsam и Innodb или на детальнейший
обзор функционала Innodb (желательно посвежее).
То что нарыл в интернет - как-то поверхностно, только самое очевидное (куски оф.документации).
Нужны например такие ответы на вопросы: можно ли в Innodb блокировать таблицу целиком, как эта блокировка снимается при использовании PHP (имеется ввиду в конце выполнения скрипта) и т.д.
Вопросов конечно куча - поэтому нужно узнать все тонкости.

Неактивен

 

#2 19.04.2012 21:51:16

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Хочу попробовать Innodb

По innodb есть целый раздел в доке http://dev.mysql.com/doc/refman/5.5/en/ … gines.html

Целиком блокировать можно с помощью явной блокировки http://dev.mysql.com/doc/refman/5.5/en/lock-tables.html

Неактивен

 

#3 23.04.2012 17:52:57

ZicoRio
Завсегдатай
Зарегистрирован: 30.04.2009
Сообщений: 31

Re: Хочу попробовать Innodb

Правильно ли я понял:

1. чтобы блокировка (разблокировка) таблиц не закрыла трансакцию
нужно все манипуляции трансакции проводить между блокировкой и разблокировкой таблиц?

2. и если объявить блокировку таблиц внутри трансакции будет commit или просто оннулирование самой трансакции?

и все-таки хотелось бы увидесь как можно более подробный сравнительный обзор (ссылку)
между MyIsam и Innodb (Xtradb).

Отредактированно ZicoRio (23.04.2012 17:58:10)

Неактивен

 

#4 24.04.2012 07:04:03

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Хочу попробовать Innodb

Максимально подробного обзора нет, потому что по объему он бы был порядка главы из руководства про InnoDB целиком.

Основные отличия InnoDB от MyISAM (помимо построчной блокировки):

- поддержка транзакций

(остальные отличия касаются, в основном, администрирования)

- многоуровневая структура данных (между клиентом и данными таблиц есть еще журналы InnoDB)

- в память (InnoDB buffer pool) для более быстрого повторного доступа помещаются не только индексы, но и данные (в отличие от MyISAM, который помещает в память только индексы)

- хранение данных "одним куском" (по умолчанию все данные хранятся в одном файле; можно настроить так, чтобы каждая таблица была в отдельном физическом файле; при восстановлении данных, однако, иметь только этот файл будет недостаточно)


как эта блокировка снимается при использовании PHP (имеется ввиду в конце выполнения скрипта)

PHP в конце скрипта закрывает соединение, блокировка снимается автоматически.


Блокировки и транзакции пересекаться не должны. Одна перед началом себя прекращает другую (блокировка commit'ит транзакцию, транзакция снимает блокировку; подробнее см. http://dev.mysql.com/doc/refman/5.0/en/ … tions.html)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson