В БД (форум) есть основные таблицы:
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 апдейта всех таблиц в минуту и это уже на довольно посещаемых проектах.
Что скажете на счет типа движка под данную, начальную, задачу?
Потом со временем я так понимаю поменять тип движка очень просто.