2010-01-21 4 views
2

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

два вопроса:

1) Возможно ли это?

и более конкретно:

2) Будет ли такая таблица будет эффективно использоваться?

спасибо !, Jaime

+0

Какие данные, как вы собираетесь его использовать? – Harmen

+0

Я хочу знать, какие данные вы храните, когда у вас четыре тысячи миллионов строк? :) –

+1

4 миллиарда по какой-то причине не так велики, как 4000 миллионов. – Yada

ответ

3

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

ETA:

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

+1

Хороший вопрос о базе данных ключ-значение. Если это то, что вам нужно, посмотрите на Redis: http://code.google.com/p/redis/ – Jeff

+0

+1 для упоминания базы данных с ключом –

1

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

0

Я создал базу данных mysql с одной таблицей, содержащей более 2 миллионов строк (импортированные данные линии графства США для наложения на карте Google). Другая таблица имела чуть менее 1 миллиона строк (данные местоположения USGS Tiger). Это было около 5 лет назад.

Я действительно не проблема (как только я вспомнил создавать индексы! :))

+2

У него 4 ** миллиарда ** строк данных. Это на 1000 больше, чем у вас, к сожалению, я не думаю, что ваш ответ очень уместен. –

2

Это может возможно, MySQL имеет несколько механизмов хранения таблицы с разными возможностями. Я думаю, что у механизма хранения MyISAM, например, есть theoretical data size limit of 256TB, но он дополнительно ограничен максимальным размером файла в вашей операционной системе. Я сомневаюсь, что это будет полезно. Я почти уверен, что это будет не оптимально.

Я бы определенно посмотрел на разделение этих данных на несколько таблиц (возможно, даже на нескольких БД на нескольких машинах) таким образом, что это имеет смысл для ваших ключей, а затем объединяет любые результаты поиска/итоги/и т. Д. тебе нужно. Помимо всего прочего, это позволяет выполнять поиск, в котором каждый раздел просматривается параллельно (в подходе с несколькими серверами).

Я также хотел бы найти решение, которое уже проделало тяжелую работу по разделению и объединению запросов. Интересно, будет ли полезно использовать хранилище данных AppEngine Google (BigTable) или Amazon SimpleDB. Они оба ограничили бы то, что вы могли бы сделать с данными (они не являются RDBMS), но тогда все равно будет делать это.

+0

«... но это еще больше ограничено максимальным размером файла в вашей операционной системе» - не имеет ли mysql режим, в котором он может использовать необработанный, нераспределенный диск для хранения данных? Это может привести к ограничению размера файлов в файловой системе. – user151841

+0

Вот ссылка; не упоминает об исключении ограничений на размер файла. http://dev.mysql.com/doc/refman/5.0/en/innodb-raw-devices.html – user151841

+0

@unknown: И это очень здорово. Как я уже сказал, MySQL * «... имеет несколько систем хранения таблиц с различными возможностями ... механизм MyISAM, например ... [далее] ограничен ...» * (см. Ссылку, встроенную в предложение). Очень здорово, что InnoDB (другой движок) может использовать необработанные устройства. –

0

4 gigarows не так уж и много, на самом деле, он довольно усерден для обработки любым движком базы данных сегодня. Даже разбиение может быть излишним. Он должен просто работать.

Ваша производительность будет зависеть от вашего HW.

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