Яка верхня межа записів для таблиці баз даних MySQL. Мені цікаво про поліпшення автоматичного збільшення. Що буде, якщо додати мільйони записів? Як впоратися з подібними ситуаціями? Дякую!
Яка верхня межа записів для таблиці баз даних MySQL. Мені цікаво про поліпшення автоматичного збільшення. Що буде, якщо додати мільйони записів? Як впоратися з подібними ситуаціями? Дякую!
Відповіді:
Типи mysql int можуть виконати досить багато рядків: http://dev.mysql.com/doc/refman/5.0/uk/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/uk/source-configuration-options.html
Система зберігання даних MyISAM підтримує 2 32 рядки на таблицю, але ви можете створити MySQL з --with-big-tables
можливістю підтримувати її до 2 64 рядків на таблицю.
http://dev.mysql.com/doc/refman/5.1/uk/innodb-restrictions.html
Схоже, двигун зберігання InnoDB не має обмеження на кількість рядків, але він має обмеження на розмір столу 64 терабайти. Скільки рядків вміщується до цього, залежить від розміру кожного ряду.
Я пропоную ніколи не видаляти дані. Не кажіть, якщо таблиці довші ніж 1000 усікають кінці таблиці. У вашому плані повинна бути реальна бізнес-логіка, наприклад, як довго цей користувач був неактивним. Наприклад, якщо він довший 1 року, тоді покладіть їх в іншу таблицю. У вас це станеться щотижня або щомісяця в сценарії технічного обслуговування посеред повільного часу.
Коли ви зіткнетеся з багатьма рядками таблиці, тоді вам слід почати чіткішати таблиці або розділення і вводити старі дані в старі таблиці за роками, наприклад користувачі_2011_jan, users_2011_feb або використовувати номери за місяць. Потім змініть програмування для роботи з цією моделлю. Можливо, складіть нову таблицю з меншою кількістю інформації, щоб узагальнити дані в менших стовпцях, а потім зверніться до таблиць з більшими розмірами лише тоді, коли вам потрібно більше інформації, наприклад, коли користувач переглядає їх профіль. Все це слід розглядати дуже ретельно, тому надалі його не дуже дорого переосмислювати. Ви також можете розміщувати в одній таблиці лише тих користувачів, які весь час відвідують ваш сайт, та користувачів, які ніколи не заходять в архівований набір таблиць.
У InnoDB з обмеженням розміру таблиці 64 терабайт та обмеженням розміру рядків MySQL 65,535 може бути 1,073,741,824 рядків. Це буде мінімальна кількість записів, що використовують максимальний розмір рядка. Однак можна додати більше записів, якщо розмір рядка менший.
Відповідно до розділу масштабованості та обмежень у http://dev.mysql.com/doc/refman/5.6/uk/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/uk/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/uk/innodb-restrictions.html
Межі немає. Це залежить лише від вашої вільної пам'яті та максимального розміру файлу системи. Але це не означає, що ви не повинні вживати запобіжних заходів щодо вирішення питань використання пам'яті у вашій базі даних. Завжди створюйте скрипт, який може видаляти рядки, які не використовуються, або які містять загальну кількість рядків у певній фігурі, скажімо, тисяча.