Максимальный размер таблицы для базы данных MySQL - PullRequest
28 голосов
/ 07 сентября 2008

Какой максимальный размер таблицы MySQL? Это 2 миллиона на 50GB? 5 миллионов на 80GB?

Нужно ли думать о сжатии данных на более высоком конце шкалы размеров? Или, может быть, разделить стол, если он стал слишком большим?

Ответы [ 3 ]

36 голосов
/ 23 ноября 2010

Однажды я работал с очень большой (Terabyte +) базой данных MySQL. Самая большая таблица у нас была буквально более миллиарда строк.

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

Простое резервное копирование и хранение данных было проблемой. Если понадобится, чтобы восстановить стол, потребуются дни.

У нас было множество таблиц в диапазоне от 10 до 100 миллионов. Любые значительные присоединения к таблицам были слишком трудоемкими и заняли бы вечность. Поэтому мы написали хранимые процедуры для «обхода» таблиц и объединения процессов с диапазонами идентификаторов. Таким образом, мы будем обрабатывать данные по 10-100 000 строк за раз (объединение с идентификаторами 1-100 000, затем 100 001-200 000 и т. Д.). Это было значительно быстрее, чем объединение против всей таблицы.

Использование индексов для очень больших таблиц, которые не основаны на первичном ключе, также намного сложнее. Mysql хранит индексы в двух частях - он хранит индексы (кроме первичного индекса) как индексы для значений первичного ключа. Таким образом, индексированный поиск выполняется в двух частях: сначала MySQL переходит к индексу и извлекает из него значения первичного ключа, которые ему нужно найти, затем выполняет второй поиск по индексу первичного ключа, чтобы найти, где находятся эти значения.

Суть в том, что для очень больших таблиц (1-200 миллионов плюс строки) индексация по таблицам является более строгой. Вам нужно меньше, более простых индексов. И выполнение даже простых операторов выбора, которые не находятся непосредственно в индексе, может никогда не вернуться. Где пункты должны попасть в индексы или забыть об этом.

Но, несмотря на это, все действительно работало. Мы смогли использовать MySQL с этими очень большими таблицами, выполнять вычисления и получать правильные ответы.

0 голосов
/ 19 октября 2013

Смотрите это http://www.clb4u.com/2013/10/scalability-and-limits-of-mysql.html

Поддержка больших баз данных. Мы используем MySQL Server с базами данных, которые содержат 50 миллионов записей. Мы также знаем о пользователях, которые используют MySQL Server с 200 000 таблиц и около 5 000 000 000 строк.

0 голосов
/ 07 сентября 2008

Что касается вашего первого вопроса, эффективный максимальный размер базы данных обычно определяется операционной системой, в частности, размер файла, который MySQL Server сможет создавать, а не самим MySQL Server. Эти ограничения играют большую роль в таблицах ограничений размера. И MyISAM работает не так, как InnoDB. Таким образом, любые таблицы будут зависеть от этих ограничений.

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

Я не уверен, что реальное количество записей в каждой таблице, учитывая всю необходимую информацию (ОС, тип таблицы, столбцы, тип данных и размер каждой и т. Д ...) И я не уверен, что эту информацию легко рассчитать , но я видел простую таблицу с записями около 1bi в паре случаев, и MySQL не сдавался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...