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



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

965   8  

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 с 200 000 таблицами и около 5 000 000 000 строк.

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

The maximum row size for a given table is determined by several factors:
  • внутреннее представление таблицы MySQL имеет максимальный размер строки предел 65 535 байт, даже если механизм хранения способен поддержка больших рядов. 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 КБ. Для страниц 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

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

Comments

    Ничего не найдено.