MyISAM vs Innodb

Стоит ли переходить с MyISAM на Innodb?

#1 19 июня 2009 в 23:05
Кто что думает? Скорость инсертов и селектов против псевдонадежности.
#2 20 июня 2009 в 08:13
для instant
#3 13 января 2010 в 00:21
Ну так кто-нибудь может популярно объяснить MyISAM vs Innodb в контексте инстанта?
Все-таки лайвстрит, битрикс, может еще что использует Innodb...
И если

Хотя да, что об этом говорить, всё равно инстанта это не касается.

bibendi
как сделать чтобы касалось.
В общем хотелось бы услышать более менее объективный ответ.
#4 13 января 2010 в 09:04
Вот цитата из описания таблиц InnoDB:
  1. InnoDB предназначается для получения максимальной производительности при обработке больших объемов данных. По эффективности использования процессора этот тип намного превосходит другие модели реляционных баз данных с памятью на дисках.
  2.  
  3. Технически InnoDB является завершенной системой управления базой данных в рамках MySQL. В InnoDB есть свой собственный буферный пул для кэширования данных и индексов в основной памяти. Таблицы и индексы InnoDB хранятся в специальном пространстве памяти, которое может состоять из нескольких файлов. В этом заключается отличие InnoDB от, например, таблиц MyISAM: каждая таблица MyISAM хранится в отдельном файле. Таблицы InnoDB могут быть любого размера даже в тех операционных системах, где установлено ограничение файла в 2 Гб.
  4.  
  5. ...
  6.  
  7. В настоящий момент (октябрь 2001 года) таблицы InnoDB применяются на нескольких больших сайтах баз данных, для которых важна высокая производительность. Так, таблицы InnoDB используются на популярном сайте новостей Slashdot.org. Формат InnoDB применяется для хранения более 1Тб данных компании Mytrix, Inc; можно привести пример еще одного сайта, где при помощи при помощи InnoDB обрабатывается средняя нагрузка объемом в 800 вставок/обновлений в секунду.
  8.  
  9.  
#5 13 января 2010 в 09:25

А самое главное, что ИНСТАНТ не использует все эти преимущества.

wordwild

Хотя да, что об этом говорить, всё равно инстанта это не касается.

bibendi

Как понять эти высказывания?
#6 13 января 2010 в 11:48
Насколько я понимаю, не использует эти преимущества, имеется ввиду, что аппарат транзакций не используется. Но это думаю и не нужно. А вот блокировка на уровне записи используется таблицами автоматом и никаких дополнительных телодвижений не нужно делать.
В то же время цитата из описания MyISAM-таблиц
  1. При помощи команды INSERT можно вставлять новые строки в таблицу, в середине файла данных которой нет свободных блоков, в то время как другие потоки считывают из таблицы информацию (совмещенная вставка). Свободный блок может быть получен при обновлении строки с динамической длиной, когда большее количество данных заменяется меньшим количеством или при удалении строк. Когда свободных блоков не остается, все последующие блоки снова будут вставляться как совмещенные.
  2.  
То есть один процесс вставляет информацию в таблицу, а другие в это время считывают информацию из этой же таблицы. Не понятно, а где же тогда применяется блокировка таблицы или я неправильно понимаю текст этого описания?

А вот в другом источнике советы:
  1. Innodb следует использовать:
  2. Когда взаимодействие с базой имеет характер OLTP (http://ru.wikipedia.org/wiki/OLTP)
  3. Когда требуются транзакции.
  4. Когда нужна высокая надежность хранения и быстрое восстановление после сбоя.
  5. Innodb хорошо справляется со смешанной нагрузкой (select/update/delete/insert).
  6.  
  7. Минусы Innodb:
  8. могут возникать deadlock, не свойственные MyISAM;
  9. Медленнее выполняются insert операции и работа с блобами;
  10. Не поддерживается полнотекстовый поиск;
  11. Проблемы с производительностью COUNT(*);
  12. Для Innodb нет поддержки mysqlhotcopy;
  13.  
  14. С MyISAM есть одна нехорошая проблема, таблица может на ровном месте отказаться
  15. работать до выполнения REPAIR TABLE.
  16. Случается такое крайне редко, но и этого хватает. Пример: http://blog.lexa.ru/2008/10/05/vash_mysql___to_esche_g.html
  17. Поэтому с для MyISAM рекомендуется организовать периодический запуск mysqlcheck через cron.
  18.  
  19. Из-за особенности организации блокировки (в MyISAM блокировка на уровне
  20. таблицы, в Innodb - на уровне строк),
  21. MyISAM имеет смысл использовать, когда преобладают операции insert или select,
  22. но крайне мало delete или update.
  23. Когда можно обойтись без транзакций.
  24. Когда выполняются запросы, характерные для OLAP
  25. (http://ru.wikipedia.org/wiki/OLAP)
  26. Когда таблица используется для хранения лога (поддержка конкурирующих insert);
  27. Когда много запросов вида Select count(*).
  28. Когда нужно задействовать средства полнотекстового поиска.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожие темы

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.