Каков верхний предел записей для таблицы базы данных MySQL. Мне интересно про автоинкрементное поле. Что будет, если я добавлю миллионы записей? Как справиться с такими ситуациями? Спасибо!
Каков верхний предел записей для таблицы базы данных MySQL. Мне интересно про автоинкрементное поле. Что будет, если я добавлю миллионы записей? Как справиться с такими ситуациями? Спасибо!
Ответы:
Типы 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 в качестве первичного ключа, у вас может быть только столько строк, сколько число уникальных значений в типе данных вашего первичного ключа, но вам не нужно делать первичный ключ целым числом Вы можете сделать это символ (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 терабайта. Сколько строк вписывается в это зависит от размера каждого ряда.
Я предлагаю никогда не удалять данные. Не говорите, что если таблицы длиннее 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 Server с базами данных, которые содержат 50 миллионов записей. Некоторые пользователи используют MySQL Server с 200 000 таблиц и около 5 000 000 000 строк.
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 ».
Ссылка http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Пределы размера строки
Максимальный размер строки для данной таблицы определяется несколькими факторами:
Максимальное значение размера строки во внутреннем представлении таблицы MySQL составляет 65 535 байт, даже если механизм хранения способен поддерживать большие строки. Столбцы BLOB и TEXT вносят только 9-12 байт в ограничение размера строки, поскольку их содержимое хранится отдельно от остальной части строки.
Максимальный размер строки для таблицы InnoDB, который применяется к данным, хранящимся локально на странице базы данных, составляет чуть меньше половины страницы для настроек 4nB, 8KB, 16KB и 32KB innodb_page_size. Например, максимальный размер строки составляет чуть менее 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
Там нет предела. Это зависит только от вашей свободной памяти и максимального размера файла системы. Но это не означает, что вы не должны принимать меры предосторожности при решении проблемы использования памяти в вашей базе данных. Всегда создавайте сценарий, который может удалять строки, которые не используются или которые будут содержать общее количество строк в пределах определенного числа, скажем тысячи.