[MySQL] InnoDB vs MyISAM
ИМХО, имеет смысл сравнивать только на конкретной задаче.
Хочется узнать, в каких задачах вы использовали InnoDB и почему именно его, а не MyISAM, и с какими трудностями приходится сталкиваться?
myisam - быстрее, но бывает что теряются данные
чтение\выборка innnodb немного медленнее
запись myisam быстрее, но если конкурентное запись\чтение, то innodb лучше
Вот что накопалось из плюcов-минусов InnoDB применительно к нашему случаю (высокопроизводительная система для телефонии под большой нагрузкой):
+
"Основным недостатком MyISAM с точки зрения производительности является локировка на уровне таблицы при выполнении тех или иных операций. В результате, при большой нагрузке MySQL именно MyISAM таблицы становятся основным узким местом в системе, мешая увеличивать утилизацию машины и число обрабатываемых запросов. Это также приводит к увеличению времени работы страницы за счет ожидания используемых таблиц на уровне MySQL. "
То есть для многопользовательских систем, где несколько потоков/пользователей одновременно обращаются к одним и тем же данным, InnoDB является значительно более приоритетным решением.
+
Надёжность InnoDB - транзакции, foreign keys и другие прелести мощного реляционного движка, без которых в некоторых случаях уже не обойтись.
-
В InnoDB включен автокоммит по умолчанию, поэтому без его отключения операции вставки и изменения строк будут производиться достаточно долго по сравнению с MyISAM. Необходимо переписывать операции последовательной вставки c применением ручных транзакций в тех местах кода, где в цикле вставляется сразу много записей.
-
Размер файлов на диске при использовании InnoDB примерно в 5 раз превышает размер файлов при использовании MyISAM.
-
Вызов SELECT COUNT для таблицы размером в 10 миллионов записей выполняется несколько минут. Это реальная проблема. Waorkaround'ов немного - триггер на каждое добавление-удаление и таблица-счётчик, использование автоинкрементируемого значения как count (если из таблицы ничего не удаляется) и всё вроде. В любом случае, это потребует переписывания кода.
если даже и такого знания нет, просто брось монетку
Но типа криво-косо можно и без них обойтись. И вот хочется понять, стоит ли овчинка выделки. Может, поимев транзакции, мы окажемся перед проблемами более серьёзными, чем проблемы от отсутствия транзакций...
кроме производительности и места, о которых написано выше
Оставить комментарий
Fragaria
Хотелось бы от пользователей систем на этих двух движках услышать их плюсы и минусы...Знаю насчёт последовательной вставки многих значений в цикле при включенном автокоммите в InnoDB, знаю насчёт того, что места InnoDB-базы занимают значительно больше...
Но хотелось бы услышать реальные отзывы