Что выбрать MyISAM или InnoDB

Antexnew
Дата: 25.01.2013 17:34:15
В БД (форум) есть основные таблицы:
1. USERS: id_user, username, passw, count_post.
2. POSTS: id_post, id_topic, id_poster, name_poster, date_time_post, post_text.
3. TOPICS: id_topic, id_razdel, title_lopic, id_author, name_author, last_post_id, last_poster_id, last_poster_name, count_posts.
4. RAZDEL: id_razdel, title_razdel, last_post_id, last_poster_id, last_poster_name.

При добавлении сообщения оно insert-ится в таблицу POSTS, а так же обновляются поля, выделенные жирным в таблицах USERS, TOPICS, RAZDEL. (для того чтобы потом простым селектом получить данные для главной страницы и т.п.)

Вопрос стоит по поводу выбора движка бд. На большой нагрузке и VDS хостинге уже понял, что InnoDB лучший выбор (на нагрузке будет существенно меньше блокировок при одновременных выборках и обновлениях).
НО в начале реалии будут такие: размещение проекта на виртуальном хостинге до достижения некого порога посещаемости и нагрузки на сервер. (На первом этапе о VPS со своими конфигами оборудования и речи идти не может.)
А начальная задача сводится к оптимальной и легкой работе приложения на вирт. хостинге.

Поэтому я задумался, не лучше ли будет для данного этапа все-таки использовать тип таблиц MyIsam...?
Так как прочитал про многие достоинства и недостатки InnoDB и MyISAM и думаю, что для виртуального хостинга на первом этапе существования проекта возможно движок InnoDB будет тяжеловат. Вот какие аргументы я встретил в сети:
....Innodb требует настройки ....... зачастую необходимо прикидывать расход оперативной памяти сервера (с MyISAM это будет в разы меньше, чем с InnoDB).

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

автор
…..Дефолтные конфиги, кроме my-innodb-heavy-4G.cnf(ini), выделяют минимальный объём памяти под буфера InnoDB, позволяющие ему как-то функционировать, но, при сколько-нибудь значительном объёме данных в таблицах InnoDB, далеко не оптимально. Пока в ваших тестах на тысячу записей вы вряд ли столкнулись с этим моментом, но, для реального использования этого движка, конфиги надо будет подкорректировать….


Боюсь, что для вирт. хостинга InnoBD будет тяжеловат, здесь смущает:
1. Расход оперативной памяти в разы ниже в MyISAM.
2. Дедлоки в InnoDB – не знаю что за зверь такой? Как с этим бороться?
3. Конфиги InnoDB на вирт. Сервере (минимальный объём памяти под буфера InnoDB). Повлиять на конфиги сервера на таком хостинге не получится.

Скажу, что это всё данные приведенные выше 2-4 летней давности. И возможно что-то изменилось?

Сейчас сделал анализ нескольких форумов: уник. посетители, просмотры и кол-во постов в минуту:
1. 35 000 уник. 137 535 просмотров. 1 сообщение пишется в минуту. (570 тыс. сообщений в базе)
2. Посещаемость скрыта. 1,6 сообщений в минуту. (960 тыс. сообщений в базе)

Получается, если я не ошибаюсь, не очень много insert в таблицу posts и соответственно update(в таблицах users, topics, razdel) : 1-2 апдейта всех таблиц в минуту и это уже на довольно посещаемых проектах.

Что скажете на счет типа движка под данную, начальную, задачу?
Потом со временем я так понимаю поменять тип движка очень просто.
miksoft
Дата: 25.01.2013 17:39:56
Antexnew,

Вы хотите сказать, что у вас 35 000 уникальных посетителей в минуту??? не верю!
Даже если в сутки, то это уже многовато для шаред-хостинга.
ScareCrow
Дата: 25.01.2013 17:48:37
автор
Что скажете на счет типа движка под данную, начальную, задачу?

пофик. не заморачивайся.
Antexnew
Дата: 25.01.2013 17:54:58
miksoft
Antexnew,

Вы хотите сказать, что у вас 35 000 уникальных посетителей в минуту??? не верю!
Даже если в сутки, то это уже многовато для шаред-хостинга.

Во первых - это в сутки.
А во вторых: читайте внимательно: "я сделал анализ нескольких форумов" - это не мои форумы. И конечно там скорее всего не шаред, но я привел просто цифры для сравнения СООТНОШЕНИЯ ЗАПРОСОВ.

А моя задача описана в первом посте.
miksoft
Дата: 25.01.2013 18:05:30
Antexnew
miksoft
Antexnew,

Вы хотите сказать, что у вас 35 000 уникальных посетителей в минуту??? не верю!
Даже если в сутки, то это уже многовато для шаред-хостинга.
Во первых - это в сутки.
"уник. посетители, просмотры и кол-во постов в минуту" - это над понимать как "в сутки"?
Antexnew
А во вторых: читайте внимательно: "я сделал анализ нескольких форумов" - это не мои форумы.
Перечитал еще раз. Фразы "не мои" не увидел.
Так что претензии к внимательности не принимаются.
Antexnew
И конечно там скорее всего не шаред, но я привел просто цифры для сравнения СООТНОШЕНИЯ ЗАПРОСОВ.
В приведенной статистике ничего не говорит о реальной интенсивности запросов к базе. Может там на каждый просмотр пишется 5 записей, а на каждый пост - 10 записей. А, может, и вовсе базы нет, а все построено на файлах (утрирую, конечно, но форумы на файлах я реально видел)

Antexnew
А моя задача описана в первом посте.
InnoDB, если не уверены в обратном.
Кстати, на шаред-хостингах обычно конфиг MySQL править не дают, т.е. выясняйте его до уплаты денег.
А на приличных шаред-хостингах MySQL живет на отдельном хосте, настроен специалистами хостера и не тратит ресурсы на веб-сервере.
Akina
Дата: 25.01.2013 18:13:34
Движок - характеристика не базы, а таблицы. А потому движок надо выбирать для каждой таблицы отдельно - т.е. рассматривать не два, а все 16 вариантов.

В первом приближении - я бы начал думать от MyISAM для таблицы постов, и InnoDB для остальных трёх. Это в предположении, что апдейт остальных трёх таблиц (выделенные поля) выполняется программно клиентской (скриптовой) частью. Если же логика вынесена на сервер (процедуры либо триггеры) - то от реализации и надо бы начать описывать задачу.
ScareCrow
Дата: 25.01.2013 18:32:53
VDS на хетзнере стоит 200 рублей. забейте на шаред хостинг.