Как я знаю, когда проект только к большому для MySQL, и я должен использовать что-то с лучшей репутацией масштабируемости?
Существует ли макс. размер базы данных для MySQL, прежде чем неисправность производительности произойдет? Что факторы вносят в MySQL, не являющийся жизнеспособным вариантом по сравнению с коммерческим DBMS как Oracle или SQL Server?
В основном это размер стола.
Я предполагаю, что вы будете использовать плагин Oracle innoDB для mysql в качестве движка. Если вы этого не сделаете, это, вероятно, означает, что вы используете коммерческий движок, такой как infiniDB, InfoBright for Tokutek, и в этом случае ваши вопросы должны быть отправлены им.
InnoDB немного неприятен с очень большими таблицами. Рекомендуется по возможности разбивать таблицы на очень большие экземпляры. По сути, если ваши (часто используемые) индексы не все помещаются в оперативную память, вставки будут очень медленными, поскольку им нужно будет касаться большого количества страниц, не находящихся в оперативной памяти. Это невозможно обойти.
Вы можете использовать функцию разделения MySQL 5.1, если она делает то, что вы хотите, или разбивать ваши таблицы на уровне приложения, если это не так. Если вы можете заставить индексы своих таблиц уместиться в оперативной памяти и загружать только одну таблицу за раз, то вы в выигрыше.
Вы можете использовать сжатие плагина, чтобы заставить ваш RAM работать немного дальше (поскольку страницы сжимаются как в RAM, так и на диске), но это не может преодолеть фундаментальное ограничение.
Если не все индексы вашей таблицы (или, по крайней мере, ПОЧЕМУ - если у вас есть несколько индексов, которые имеют значение NULL в 99,99% случаев, вы можете обойтись без этих), уместиться в оперативной памяти, скорость вставки будет отстой.
Размер базы данных не является серьезной проблемой при условии, что ваши таблицы индивидуально помещаются в оперативную память, пока вы выполняете массовую загрузку (и, конечно, вы загружаете только одну за раз).
Эти ограничения действительно имеют место с большинством строковых баз данных. Если вам нужно больше, подумайте о базе данных столбцов.
Infobright и Infinidb используют ядро на основе mysql и являются движками на основе столбцов, которые могут обрабатывать очень большие таблицы.
Tokutek тоже довольно интересен - вы можете связаться с ними для оценки.
Когда вы оцениваете пригодность движка, не забудьте загрузить в него очень большие данные о производственном оборудовании. Нет смысла тестировать его с (например) базой данных 10G, это ничего не докажет.
Google использует MySQL. Ваш проект больше, чем Google?
Smart-alec отмечает, что MySQL - это приложение для работы с базами данных профессионального уровня. Если ваше приложение создает нагрузку на MySQL, я уверен, что оно будет делать то же самое практически с любой другой базой данных.
Если вы ищете пару примеров:
Facebook перешел на Cassandra только после того, как он сохранил более 7 терабайт данных для входящих сообщений. (Источник: Лакшман, Малик: Кассандра - децентрализованная структурированная система хранения .) (... Хотя на этом этапе у них было довольно много проблем.)
Википедия также обрабатывает сотни Гигабайт текстовых данных в MySQL.
Вам следует обратить внимание не только на размер при операциях. Важными также являются:
Что бы вы ни выбрали, будьте осторожны с Oracle RAC (их кластер) - это, как известно, «проблематично» (если точнее сказать). SQL Server, как известно, намного дешевле, намного хуже масштабируется (нет опции «RAC»), но в основном работает, не заставляя администраторов каждый час совершать самоубийства (вариант «RAC», кажется, делает это). Масштабируемость "намного хуже" все еще достаточно хороша для Terra Server ( http://msdn.microsoft.com/en-us/library/aa226316 (SQL.70) .aspx )
Там Недавно здесь были вопросы о людях, у которых возникли проблемы с восстановлением индексов в базе данных 10 ГБ или что-то в этом роде.
Вот вам и мои 2 цента. Я уверен, что некоторые специалисты по MySQL решат проблемы.
MySQL - это коммерческая СУБД, у вас просто есть опция , чтобы получить поддержку / мониторинг, предлагаемые Oracle или Microsoft. Или вы можете использовать поддержку сообщества или программное обеспечение для мониторинга, предоставляемое сообществом.
Я работаю в очень большой интернет-компании. MySQL может очень и очень масштабироваться с очень хорошей производительностью, но с некоторыми оговорками.
Одна из проблем, с которой вы можете столкнуться, заключается в том, что индекс больше 4 гигабайт не может попасть в память. Однажды я потратил много времени, пытаясь улучшить полнотекстовую производительность MySQL, возясь с некоторыми параметрами индекса, но вы не можете обойти фундаментальную проблему, заключающуюся в том, что если ваш запрос попадает на диск для индекса, он становится медленным.
Вы можете найти вспомогательные приложения, которые помогут решить вашу проблему. Для полнотекстовой задачи существует Sphinx: http://www.sphinxsearch.com/
Джереми Заводни, который сейчас работает в Craig's List, ведет блог, в котором время от времени обсуждает производительность больших баз данных. : http://blog.zawodny.com/
Таким образом, ваш проект, вероятно, не слишком велик для MySQL. Он может быть слишком большим для некоторых способов, которыми вы раньше использовали MySQL, и вам может потребоваться их адаптировать.