ФорумРазработкаБазы данных → переход с MyISAM на InnoDB

переход с MyISAM на InnoDB

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 1 апреля 2010 г. 17:53

    как-то так повелось исторически, что все таблицы у меня всегда на MyISAM движке. И это не потому, что я часто использую полнотекстовый поиск, а просто потому, что такой тип идет по-умолчанию. Шло время, я не спешил переходить на другие движки, хотя время от времени почитывал о них.

    Тема совершенно не джедайская, да это все можно нагуглить, но мне охота именно обсудить вопрос.

    Прошу ответить на следующие вопросы
    Итак, зачем мне переходить на InnoDB? Какие преимущества:
    - производительность??? цитата "SELECT (*) FROM table работает гораздо медленнее, чем MyISAM — создавайте триггеры если нужно" настораживает.
    - транзакции. Зачем они мне? я и без них живу нормально. Чем лучше запись->проверка->откат в отличие от проверка->запись?
    - внешние ключи. Это отразится на производительности (в лучшую сторону) или просто какие-то вещи будут делаться более удобно?
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 апреля 2010 г. 17:55, спустя 1 минуту 33 секунды

    такой тип идет по-умолчанию
    В новых версиях innodb идет по дефолту, или я ошибаюсь?
    http://greenmice.info/ru/node/106
    Спустя 59 сек.
    Лично для меня MyISAM - это вечные крэши, поэтому я его не юзаю вообще.
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 1 апреля 2010 г. 18:12, спустя 17 минут 26 секунд

    спасибо за ссылку

    К примеру, оно должно быть готово к возникновению дедлоков, которые в Innodb могут случаться даже если вы не используете транзакции, но никогда не случаются в MyISAM. Разумеется перед переходом нужно тщательно протестировать приложение.

    значит ли это, что транзакции обязательны и каждый INSERT/DELETE/UPDATE нужно обрамлять start+commit?

    >Я не буду конвертировать таблицу в MyISAM если это не увеличивает производительность более чем на 5%, но определенно буду использовать MyISAM для хранения логов и подобного.

    Я всегда думал, что InnoDB надо использовать, когда много инсертов в таблицу. В случае логов - именно так и есть, но Вы говорите, что использовали бы MyISAM. Что я не так понял?

    +1
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 апреля 2010 г. 18:16, спустя 3 минуты 41 секунду

    Абырвалг, я не юзаю механизм транзакций
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 1 апреля 2010 г. 22:03, спустя 3 часа 47 минут 15 секунд


    Лично для меня MyISAM - это вечные крэши, поэтому я его не юзаю вообще.
    +1
    Спустя 27 сек.
    именно поэтому я с него слез полностью
    все умрут, а я изумруд
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2010 г. 13:35, спустя 6 дней 15 часов 32 минуты

    Юзаю фактичести только InnoDB. Главное ключики проставлять верно. база не засирается вообще, сохраняется целостность. view - охуенная фича. Да, можно и делать на уровне пыхи посылая по 100 запросов в базу за раз, но нахуя? База должна быть связана, вы просто ахуеете в проекте с парой сотней таблиц подчищать за удалением "корневой" записи в myISAM. Около полтора года назад юзал myISAM, потому как проще, и знать надо меньше, как устроился в текущую контору, понял всю силу InnoDB. А в целом фич дохуя, единственное, можно неправильно проставить индексы на поле, или не проставить :)
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 16 апреля 2010 г. 0:08, спустя 7 дней 10 часов 32 минуты

    Расскажи про силу InnoDB, а то я пока юзаю майисам
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 19 апреля 2010 г. 12:16, спустя 3 дня 12 часов 8 минут


    Расскажи про силу InnoDB, а то я пока юзаю майисам
    o0 ты это имел ввиду? myISAM
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 19 апреля 2010 г. 15:34, спустя 3 часа 17 минут 50 секунд

    Вот я до сих пор тоже не задумывался над типом БД. Стоит чего-то по умолчанию и славно. А щас уже интересно стало почему народ начинает активно на InnoDB переходить. Это мне напоминает переход с cp1251 на utf8. В этом я вроде разобрался. а вот с типами всё никак и не могу нормальное описание и принципы работы найти. Хотя конечно особо усердно не искал :)
    Если кому не лень. покидайте сюда ссылочки с интересными и полезными примерами, всеми ЗА и ПРОТИВ, может какие таблицы сравнения типа чего есть там и чего нету. Ну или название какого хорошего учебника по этому делу.
    from TRIAL with LOVE
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 15:36, спустя 1 минуту 49 секунд

    innodb vs myisam
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 15:53, спустя 17 минут 52 секунды

    TRIAL, тебе типа плюсы инодб перед майисамом:

    - транзакции
    - внешн ключи
    - настроение плохое, вспоминать влом

    и самый большой плюс:
    - крашатся с возможностью восстановить все ибо хранят инфы больше чем надо, мд5 подтвердит

    минус - нет полнотекстового поиска, да и зачем он мускулю? он там и так гавно :)
    Сапожник без сапог
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 16:15, спустя 21 минуту 35 секунд


    - крашатся с возможностью восстановить все ибо хранят инфы больше чем надо, мд5 подтвердит
    подтверждаю
    все умрут, а я изумруд
  • medar

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 19 мая 2010 г. 21:28, спустя 30 дней 5 часов 13 минут

    У меня есть варварская привычка бэкапить базу - тормозить mysql и паковать гзипом /var/lib/mysql/название_базы
    В условиях многогиговых баз и необходимости ежедневного бэкапа это мне видится единственно возможным решением. Потом распаковываю архив себе в денвер или на другой сервак и получаю полностью работоспособную базу. Меня этот метод никогда не подводил.

    Недавно на одном из проекте попробовал перейти на innodb, так как там по всем условиям он должен подходить. Сделал хранение базы "каждая таблица - в своем файлике", как на myisam, сконвертировал. Остановил сервак, запаковал, скопировал себе в денвер - и вижу в phpmyadmin надпись in use напротив каждой таблицы. Видимо, какая-то инфа хранится не только в этих файлах. Но /var/lib/mysql/ibdata1 у меня имеет какой-то нереальный размер (я сначала сконвертировал базу без указания хранить каждую таблицу в своем файле, но после изменения конфига и перезапуска ibdata1 не сдулся), паковать еще и его вместе с базой как-то не хочется. Откатился на myisam.
    Держать все в ibdata1 не хотелось, так как возможна ситуация, когда есть несколько больших innodb баз и бэкапить все постоянно ради одной-двух.. Хотелось универсального решения.

    Посему вопрос. Может быть, есть другой способ быстрого бэкапа многогиговых баз innodb ? Вообще, кто как бэкапит innodb ?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 19 мая 2010 г. 21:51, спустя 22 минуты 16 секунд

    mysqldump?
    sypex dymper?
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 19 мая 2010 г. 22:06, спустя 15 минут 32 секунды

    паковать гзипом /var/lib/mysql/название_базы

    mysqlhotcopy
    Спустя 75 сек.
    http://adw0rd.ru/2009/mysqldump-and-cheat-sheet/ в конце статьи ответ
    Спустя 26 сек.
    http://adw0rd.ru/2009/recovery-innodb/ еще в помощь
    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!