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