Максимальное количество записей в таблице базы данных MySQL

каков верхний предел записей для таблицы базы данных MySQL. Мне интересно о поле autoincrement. Что произойдет, если я добавлю миллионы записей? Как справиться с такого рода ситуациями? Thx!

8 ответов


типы mysql int могут делать довольно много строк:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

без подписи int наибольшее значение равно 4,294,967,295
неподписанные bigint наибольшее значение равно 18,446,744,073,709,551,615


наибольшее значение целого числа имеет мало общего с максимальное количество строк вы можете хранить в таблице.

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

есть и другие ограничения на размер таблицы, кроме количества строк. Например, можно использовать операционную систему с ограничением размера файла. Или у вас может быть жесткий диск 300GB, который может хранить только 300 миллионов строк, если каждая строка имеет размер 1 КБ.

пределы размера базы данных действительно высоки:

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

механизм хранения MyISAM поддерживает 232 строк в таблице, но вы можете построить MySQL с помощью --with-big-tables возможность сделать его поддержку до 264 строк в таблице.

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

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


Я предлагаю, не удалять данные. Не говорите, если таблицы длиннее 1000, усеките конец таблицы. В вашем плане должна быть реальная бизнес-логика, например, как долго этот пользователь неактивен. Например, если это больше 1 года, то поместите их в другую таблицу. Это будет происходить еженедельно или ежемесячно в сценарии обслуживания в середине медленного времени.

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


в InnoDB с ограничением на размер таблицы 64 терабайт и пределом размера строки MySQL 65,535 может быть 1,073,741,824 строки. Это будет минимальное количество записей, использующих максимальный предел размера строки. Однако можно добавить больше записей, если размер строки меньше .


согласно разделу масштабируемости и пределов в http://dev.mysql.com/doc/refman/5.6/en/features.html, Поддержка MySQL для больших баз данных. Они используют сервер MySQL с базами данных, которые содержат 50 миллионов записей. Некоторые пользователи используют MySQL Server с 200,000 таблицами и около 5,000,000,000 строк.


Ограничения На Размер Строки

The maximum row size for a given table is determined by several factors:
  • внутреннее представление таблицы MySQL имеет максимальный размер строки ограничение в 65535 байт, даже если система хранения способна поддержка больших рядов. BLOB и текстовые столбцы вносят только 9-12 байты к ограничению размера строки, поскольку их содержимое хранится отдельно от остальной части ряда.

  • максимальный размер строки для таблицы InnoDB, которая применяется к данным храниться локально в пределах страницы базы данных, составляет чуть менее половины страницы. Например, максимальный размер строки немного меньше 8 КБ для размера страницы InnoDB по умолчанию 16 КБ, который определяется параметром конфигурации innodb_page_size. "ограничения на InnoDB таблицы".

  • если строка, содержащая столбцы переменной длины, превышает максимальный размер строки InnoDB, InnoDB выбирает столбцы переменной длины для внешнего внесстраничного хранения, пока строка не поместится в InnoDB ограничение размера строки. Объем данных, хранящихся локально для столбцов переменной длины, которые сохраненные вне страницы отличаются по формату строк. Дополнительные сведения см. В разделе "InnoDB хранения строк и форматов строк".
  • различные форматы хранения используют разные объемы данных заголовка страницы и трейлера, что влияет на объем хранилища, доступного для строк.

ссылка http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

Ограничения На Размер Строки

максимальный размер строки для данной таблицы определяется несколькими факторами:

внутреннее представление таблицы MySQL имеет максимальный предел размера строки 65,535 байт, даже если механизм хранения способен поддерживать большие строки. Столбцы BLOB и TEXT вносят только 9-12 байт в ограничение размера строки, поскольку их содержимое хранить отдельно от остальной части строки.

максимальный размер строки для таблицы InnoDB, которая применяется к данным, хранящимся локально на странице базы данных, немного меньше половины страницы для параметров 4KB, 8KB, 16KB и 32KB innodb_page_size. Например, максимальный размер строки немного меньше 8 КБ для размера страницы InnoDB по умолчанию 16 КБ. Для страниц 64KB максимальный размер строки немного меньше 16KB. См. раздел 15.8.8, "ограничения на таблицы InnoDB".

Если подряд содержащий столбцы переменной длины, превышающие максимальный размер строки InnoDB, InnoDB выбирает столбцы переменной длины для внешнего хранения вне страницы, пока строка не будет соответствовать ограничению размера строки InnoDB. Объем данных, хранящихся локально для столбцов переменной длины, которые хранятся вне страницы отличается от формата строки. Дополнительные сведения см. В разделе 15.11, "InnoDB Row Storage and Row Formats".

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

для получения информации о форматах строк InnoDB см. раздел 15.11, " хранение строк InnoDB и форматы строк "и раздел 15.8.3,"физическая структура строк таблиц InnoDB".

сведения о форматах хранения MyISAM см. В разделе 16.2.3, "форматы хранения таблиц MyISAM".

http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html


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