Каковы максимальные строки для таблицы MySQL - PullRequest
14 голосов
/ 29 января 2011

Примечание: я искал другие подобные Qs здесь, и ни один из других отвеченных вопросов даже отдаленно не похож .. С этим ... У меня есть вопрос о таблицах MySql (точнее,для определенных полей из таблицы - т.е. tweets или updates).

Итак, вопрос ... каково максимальное количество строк в таблице InnoDB?То есть, если существует значительная разница между суммами, которые могут удерживать MyIsam, InnoDB и другие, если их нет, то в целом.Во-вторых, если таблица становится действительно большой, каковы лучшие методы хранения данных (одна и та же таблица или несколько таблиц / базы данных)?

Я читал, что твиттер получает что-то вроде 100 миллионов твитов вдень.В том же контексте, как мой второй вопрос относится к чему-то вроде твиттера?

Ответы [ 3 ]

20 голосов
/ 29 января 2011

Не существует ограничения строки, но ограничение размера в базе данных InnoDB:

Минимальный размер табличного пространства составляет 10 МБ.Максимальный размер табличного пространства составляет четыре миллиарда страниц базы данных (64 ТБ).Это также максимальный размер таблицы.

Вы всегда можете горизонтально разделить таблицы, сохраняя строки в нескольких разделах одной таблицы, в нескольких файлах.

14 голосов
/ 29 января 2011

http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html позволит вам рассчитать ограничения по размеру вашего ключа.

Но я скромно полагаю, что вы не хотите хранить информацию, такую ​​как твиты, в транзакционном движке с ссылочной целостностью и т. Д.Особенности InnoDB, и вы определенно не храните их все в одной таблице в одном экземпляре БД.Вы помещаете их в множество независимых баз данных, отличных от SQL, которые позволяют быстро добавлять данные, а затем извлекать метаинформацию (например, хэштеги, RT и т. Д.) В более сложную базу данных.Презентации в архитектуре БД Twitter легко найти в Google (например, http://www.slideshare.net/nkallen/q-con-3770885).

. Если вам необходимо хранить большие объемы данных в одной таблице, разделение - ваш друг, и, возможно, Postgres лучше его поддерживает.физически несколько таблиц, которые логически выглядят как одна таблица. Вы помещаете эти вложенные таблицы (разделы) на разные диски, независимо запускаете их обслуживание и т. д. Кроме того, «звездная схема» с одной очень длинной таблицей, которая содержит только необходимые столбцы иможет помочь число таблиц, в которых хранятся столбцы большего размера, но необязательные.

2 голосов
/ 06 сентября 2017

Ограничение в 64 ТБ для таблицы имеет следующие исключения:

  • Это предполагает innodb_page_size = 16K (по умолчанию). Это может быть установлено в степени 2 между 4K и 64K, пропорционально изменяя предел табличного пространства.
  • Таблица PARTITIONed - это, по сути, группа «вспомогательных таблиц», организованных вместе и действующих как одна большая таблица. Ограничение на количество разделов до 5.6.7 было 1024. После этого было 8192. Поэтому умножьте 64 ТБ на это.

ОК, это дает вам только предел байт . Кроме того, он включает в себя служебные данные и индексы. Затем вам нужно разделить, насколько велика средняя запись, чтобы получить максимальное количество строк.

(Средний размер записи вычислить нелегко.)

Простой ответ:

Вероятно, вы легко можете получить 1 триллион "маленьких" записей в таблице InnoDB. С некоторыми усилиями вы можете получить до 1000 трлн. Но я подозреваю, что ваш бюджет на дисководы был бы исчерпан до этого. Кроме того, потребуются годы, чтобы сделать все INSERTs, чтобы заполнить его!

Итак, реалистичный ответ: MySQL может обрабатывать «неограниченное» количество строк.

Реальная жизнь? Я слышал о нескольких таблицах с более чем миллиардом строк, даже целых 15 миллиардов.

См. Мои Пределы , но это не говорит больше о вопросе строк.

...