Максимальные возможности MySQL

Как я знаю, когда проект только к большому для MySQL, и я должен использовать что-то с лучшей репутацией масштабируемости?

Существует ли макс. размер базы данных для MySQL, прежде чем неисправность производительности произойдет? Что факторы вносят в MySQL, не являющийся жизнеспособным вариантом по сравнению с коммерческим DBMS как Oracle или SQL Server?

5
задан cdated 12 May 2010 в 16:51
поделиться

6 ответов

В основном это размер стола.

Я предполагаю, что вы будете использовать плагин Oracle innoDB для mysql в качестве движка. Если вы этого не сделаете, это, вероятно, означает, что вы используете коммерческий движок, такой как infiniDB, InfoBright for Tokutek, и в этом случае ваши вопросы должны быть отправлены им.

InnoDB немного неприятен с очень большими таблицами. Рекомендуется по возможности разбивать таблицы на очень большие экземпляры. По сути, если ваши (часто используемые) индексы не все помещаются в оперативную память, вставки будут очень медленными, поскольку им нужно будет касаться большого количества страниц, не находящихся в оперативной памяти. Это невозможно обойти.

Вы можете использовать функцию разделения MySQL 5.1, если она делает то, что вы хотите, или разбивать ваши таблицы на уровне приложения, если это не так. Если вы можете заставить индексы своих таблиц уместиться в оперативной памяти и загружать только одну таблицу за раз, то вы в выигрыше.

Вы можете использовать сжатие плагина, чтобы заставить ваш RAM работать немного дальше (поскольку страницы сжимаются как в RAM, так и на диске), но это не может преодолеть фундаментальное ограничение.

Если не все индексы вашей таблицы (или, по крайней мере, ПОЧЕМУ - если у вас есть несколько индексов, которые имеют значение NULL в 99,99% случаев, вы можете обойтись без этих), уместиться в оперативной памяти, скорость вставки будет отстой.

Размер базы данных не является серьезной проблемой при условии, что ваши таблицы индивидуально помещаются в оперативную память, пока вы выполняете массовую загрузку (и, конечно, вы загружаете только одну за раз).

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

Infobright и Infinidb используют ядро ​​на основе mysql и являются движками на основе столбцов, которые могут обрабатывать очень большие таблицы.

Tokutek тоже довольно интересен - вы можете связаться с ними для оценки.

Когда вы оцениваете пригодность движка, не забудьте загрузить в него очень большие данные о производственном оборудовании. Нет смысла тестировать его с (например) базой данных 10G, это ничего не докажет.

1
ответ дан 14 December 2019 в 01:03
поделиться

Google использует MySQL. Ваш проект больше, чем Google?

Smart-alec отмечает, что MySQL - это приложение для работы с базами данных профессионального уровня. Если ваше приложение создает нагрузку на MySQL, я уверен, что оно будет делать то же самое практически с любой другой базой данных.

2
ответ дан 14 December 2019 в 01:03
поделиться

Если вы ищете пару примеров:

2
ответ дан 14 December 2019 в 01:03
поделиться

Вам следует обратить внимание не только на размер при операциях. Важными также являются:

  • Сценарии резервного копирования и восстановления?
  • Техническое обслуживание. Пример: SQL Server Enterprise может перестроить индекс, КОГДА СТАРЫЙ ДОСТУП ДОСТУПЕН - прозрачно. Это означает отсутствие простоев при перестроении индекса.
  • Доступность (в основном вы не хотите восстанавливать базу данных размером 5000 ГБ, если сервер умирает) - предпочтительнее зеркалирование, репликация «отстой» (технически).

Что бы вы ни выбрали, будьте осторожны с Oracle RAC (их кластер) - это, как известно, «проблематично» (если точнее сказать). SQL Server, как известно, намного дешевле, намного хуже масштабируется (нет опции «RAC»), но в основном работает, не заставляя администраторов каждый час совершать самоубийства (вариант «RAC», кажется, делает это). Масштабируемость "намного хуже" все еще достаточно хороша для Terra Server ( http://msdn.microsoft.com/en-us/library/aa226316 (SQL.70) .aspx )

Там Недавно здесь были вопросы о людях, у которых возникли проблемы с восстановлением индексов в базе данных 10 ГБ или что-то в этом роде.

Вот вам и мои 2 цента. Я уверен, что некоторые специалисты по MySQL решат проблемы.

1
ответ дан 14 December 2019 в 01:03
поделиться

MySQL - это коммерческая СУБД, у вас просто есть опция , чтобы получить поддержку / мониторинг, предлагаемые Oracle или Microsoft. Или вы можете использовать поддержку сообщества или программное обеспечение для мониторинга, предоставляемое сообществом.

1
ответ дан 14 December 2019 в 01:03
поделиться

Я работаю в очень большой интернет-компании. MySQL может очень и очень масштабироваться с очень хорошей производительностью, но с некоторыми оговорками.

Одна из проблем, с которой вы можете столкнуться, заключается в том, что индекс больше 4 гигабайт не может попасть в память. Однажды я потратил много времени, пытаясь улучшить полнотекстовую производительность MySQL, возясь с некоторыми параметрами индекса, но вы не можете обойти фундаментальную проблему, заключающуюся в том, что если ваш запрос попадает на диск для индекса, он становится медленным.

Вы можете найти вспомогательные приложения, которые помогут решить вашу проблему. Для полнотекстовой задачи существует Sphinx: http://www.sphinxsearch.com/

Джереми Заводни, который сейчас работает в Craig's List, ведет блог, в котором время от времени обсуждает производительность больших баз данных. : http://blog.zawodny.com/

Таким образом, ваш проект, вероятно, не слишком велик для MySQL. Он может быть слишком большим для некоторых способов, которыми вы раньше использовали MySQL, и вам может потребоваться их адаптировать.

2
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: