Максимальное количество записей в таблице базы данных MySQL - PullRequest
158 голосов
/ 26 апреля 2010

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

Ответы [ 8 ]

219 голосов
/ 27 апреля 2010

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

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

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

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

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

Механизм хранения MyISAM поддерживает 2 32 строк на таблицу, но вы можете создать MySQL с опцией --with-big-tables, чтобы он поддерживал до 2 64 строк на таблицу.

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

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

58 голосов
/ 26 апреля 2010

Типы 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

12 голосов
/ 15 апреля 2012

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

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

8 голосов
/ 21 июня 2013

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

2 голосов
/ 14 августа 2013

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

1 голос
/ 16 января 2017

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

Пределы размера строки

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

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

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

Если строка, содержащая столбцы переменной длины, превышает максимальный размер строки InnoDB, InnoDB выбирает столбцы переменной длины для внешнего хранения вне страницы, пока строка не вписывается в ограничение размера строки InnoDB. Объем данных, хранящихся локально для столбцов переменной длины, которые хранятся вне страницы, зависит от формата строки. Для получения дополнительной информации см. Раздел 15.11, «Хранение строк InnoDB и форматы строк».

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

Информацию о форматах строк 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

1 голос
/ 22 ноября 2016

Пределы размера строки

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

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

  • Если строка, содержащая столбцы переменной длины, превышает максимальный размер строки InnoDB, InnoDB выбирает столбцы переменной длины для внешнего хранения вне страницы, пока строка не вписывается в ограничение размера строки InnoDB. Объем данных, хранящихся локально для столбцов переменной длины, которые хранится вне страницы отличается по формату строки. Для получения дополнительной информации см. « Хранение строк InnoDB и форматы строк ».
  • Различные форматы хранения используют разные объемы заголовка страницы и данных трейлера, что влияет на объем хранения, доступный для строк.
0 голосов
/ 21 декабря 2011

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

...