Создание "архивной таблицы"

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

Если мне нужно вызвать текущие задачи с архивированными задачами (как в результатах поиска), я просто объединю две таблицы.

Это правильно? Получу ли я какую-либо выгоду? Я думаю, что это называется горизонтальной фрагментацией. Я использую MySQL InnoDB. Нужно ли мне делать что-то еще с определениями таблиц, чтобы реально повысить производительность?

Спасибо!!

2 ответа

Решение

отдельная таблица с той же схемой

Я не уверен, что это хорошая идея, помните, СУХОЙ (не повторяйте себя). Если вам нужно изменить схему для одного, вам придется изменить схему для другого, это может привести к ошибкам.

Также,

преждевременная оптимизация - корень зла

Запросы вашей базы данных в настоящее время выполняются слишком медленно? Я предполагаю, что они не.

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

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

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

Другие вопросы по тегам