Каков максимальный размер таблицы SQL - PullRequest
2 голосов
/ 07 августа 2009

Мне интересно, в какой момент моя таблица MySQL будет считаться слишком большой.

Таблица такова:

  • ID
  • customer_id (int)
  • значение (число с плавающей запятой)
  • timestamp_1 (datetime)
  • tmestampt_2 (datetime)

так что размер строки не слишком велик, но будет постоянно добавляться. По моей оценке, я смотрю около 17000 новых строк в день, то есть около 500 000 в месяц. Данные, вероятно, будут опрашиваться довольно постоянно в больших количествах.

Должен ли я искать способы разделить это или я все еще в порядке на этом этапе?

Спасибо

Ответы [ 4 ]

5 голосов
/ 07 августа 2009

С http://dev.mysql.com/doc/refman/5.0/en/full-table.html:

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

Из таблицы в связанной статье для систем FAT / FAT32 и Linux pre 2.4 максимальный размер файла составляет 2-4 ГБ, для всех остальных систем в списке максимальный размер файла составляет не менее 2 ТБ.

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

2 голосов
/ 07 августа 2009

То, что является «слишком большим», действительно будет зависеть от того, насколько велико ваше оборудование. Сам MySQL не должен иметь проблем с управлением миллионами строк в таблице.

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

1 голос
/ 07 августа 2009

В MyISAM теоретический размер таблицы ограничен размером указателя данных, установленным myisam_data_pointer_size.

Может быть от 2 до 7 байтов, что делает возможным размер таблицы от 2 ^ (8 * 2) = 65k до 2 ^ (8 * 7) = 64P байтов.

По умолчанию это 6 bytes (256T).

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

Табличное пространство InnoDB может состоять из 2^32 страниц, что составляет 4G страниц размером 16K байтов каждая или 64T байтов максимум.

1 голос
/ 07 августа 2009

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

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

Кроме этого, будьте осторожны при планировании своих индексов. Если вы поместите индексы повсюду, вставки могут занять больше времени. Если у вас нет индексов, но вам нужно отсортировать и отфильтровать, поиск может быть слишком медленным.

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