2009-08-07 3 views
2

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

В таблице это:

  • ID
  • customer_id (INT)
  • значение (с плавающей точкой)
  • timestamp_1 (DateTime)
  • tmestampt_2 (DateTime)

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

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

Спасибо,

+0

Трудно ответить. Вы можете иметь сотни миллионов строк в 1 таблице, и это может быть быстро. Все зависит от запросов, которые вы бежите к нему. – nos

ответ

5

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

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

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

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

1

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

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

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

2

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

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

1

В 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 байт в большинстве.

Смежные вопросы