LINUX.ORG.RU

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

 , , , ,


0

1

В БД Mysql (форум) есть основные таблицы: 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, а так же обновляются поля,count_post в таблице USERS,last_post_id, last_poster_id, last_poster_name, count_posts в таблице 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 апдейта всех таблиц в минуту и это уже на довольно посещаемых проектах.

Что скажете на счет типа движка под данную, начальную, задачу? Потом со временем я так понимаю поменять тип движка очень просто.

Боюсь, что для вирт. хостинга InnoBD будет тяжеловат

Как правило, у хостера достаточное мощное железо под бд. Поэтому я бы не парился. У тебя не такой уж и большой форум и не запредельная нагрузка.

baverman ★★★
()

Почитай разницу. Нужны ли тебе транзакции, внешние ключи и прочая, исходя из этого и выберешь.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.