2013-07-24 2 views
0

У меня есть сомнения относительно того, какой механизм БД выбрать для некоторых из моих таблиц. Я уже изучал несколько статей, книг и подобных баз данных, но все еще не уверен.Какой MySQL-сервер (MyISAM vs InnoDB) для очень занятых таблиц?

Характеристики сайта - место, где молодые музыкальные продюсеры делят свою работу (музыку) с другими. Насколько я понимаю, при загрузке и загрузке музыки будет много запросов.

Вот две основные таблицы в моей БД: «Пользователи» - 27 Колонны и «Файлы» - 22 Колонны

Вот мой вопрос, какой двигатель будет лучше MyISAM против InnoDB для обеих таблиц?

MyISAM блокирует всю таблицу, поэтому, если я правильно понимаю, когда кто-то загружает файлы, MySQL блокирует таблицу для записи данных файла, а затем, если в то же время кто-то запрашивает скачивание еще одного файла, этот запрос должен ждать, пока Mysql не разблокирует таблицу?

ответ

4

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

Это подсказывает мне, что вам понадобится механизм хранения, который поддерживает блокировку на уровне строк, то есть InnoDB.

+0

Спасибо, у меня есть дополнительный вопрос, у меня есть один столбец с типом данных tinyint (3), для теста я обновил этот столбец до значения 200, и, к моему удивлению, он показывает это значение. Поэтому мой вопрос заключается в том, почему и как работает ширина экрана, если после того, как устраивать, что мне нужны только значения от 0 -3, я могу видеть более крупные. – DannyS

+0

Спасибо, также есть разница в размере базы данных, когда я использую tinyint (1) вместо tinyint (3) в случае миллионов строк? – DannyS

+1

Позвольте пояснить это. В tinyint (m) m указывает ширину столбца в операторах SELECT; однако он не контролирует принятый диапазон чисел для этого поля. TinyINT (M) всегда имеет диапазон от -128 .. + 127. Неважно, какой размер M. И да, tinyint (1) и tinyint (3) не имеют никакого значения в размере базы данных :) –

Смежные вопросы