Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

В чем разница между InnoDB и MyISAM?

#mysql #innodb #myisam


В чем разница между движками MySQL - InnoDB и MyISAM? Каковы их слабые и сильные стороны?
    


Ответы

Ответ 1



MyISAM поддерживает сжатие таблиц в отличии от InnoDB. MyISAM имеет встроенные полнотекстный поиск в отличии от InnoDB. InnoDB поддерживает транзакции в отличии от MyISAM. InnoDB поддерживает блокировки уровня строки (MyISAM - только уровня таблицы). InnoDB поддерживает ограничения внешних ключей (MyISAM - нет). InnoDB более надежна при больших объемах данных. InnoDB в теории немного быстрее.

Ответ 2



До недавнего времени InnoDB не поддерживала полнотекстовые индексы. InnoDB не хранит ни количество строк в таблице, ни следующее значение автоинкрементного поля. Первое не так важно, поскольку мало кому бывает нужно считать все строки в таблице, без какого бы то ни было фильтра. А вот второе в теории чревато. Если после удаления последнего выданного id сервер будет перегружен, то id будет выделен повторно. Впрочем, я не слышал о случавшихся такого рода косяках на практике

Ответ 3



Есть один очевидный (но не сразу) минус MyISAM, вытекающий из особенностей блокировок. Если в системе могут выполняться тяжелые SELECTы, то любой UPDATE на участвующие в нем таблицы будет ждать окончания SELECTа и блочить все дальнейшие запросы. Если с базой работают достаточно активно, то это не вариант.

Ответ 4



Если коротко, то в InnoDB есть поддержка транзакций, а у MyISAM нету. И еще MyISAM в отличие от InnoDB поддерживает текстовую индексацию. В основном используется MyISAM.

Комментариев нет:

Отправить комментарий