У меня есть база данных с одной критической таблицей, которая широко используется и запрашивается.Время жизни данных в этой таблице разделено на два этапа: Table1
и Table1_Hist
, таким образом, как только пользователь завершит свою работу, запись передается из Table1
в Table1_Hist
для консультаций и отчетов.
Структура Table1
имеет вид
ID (Long) KEY,
Priority (INT)
val1 (VARBINARY(XXXX))
val2 (VARNINARY(XXXX))
Эта таблица заполнена миллионами записей в месяц, а записи, переданные в Table1_Hist
, сделаны в произвольном порядке, это означает, что User1
может вставить запись в Table1
сегодня и завершить работу с ней тоже сегодня, но User2
может вставить аналогичную запись в Table1
и завершить работу с ней на следующей неделе или месяце или через 3 месяца.
Проблема возникает, когда Table1_Hist
начинает расти до точки, влияющей на производительность запросов к этой таблице.Я имел в виду разделить эту таблицу на Table1_Hist_1
, Table1_Hist_2
... Table1_Hist_n
и создать таблицу ID
, в которой я могу зарегистрировать диапазон IDs
, хранящийся в каждой таблице.Например, у меня может быть карта, говорящая, что в Table1_Hist_1
хранятся IDs
от 1 до 10M и т. Д., , но , как я уже говорил, нет порядка во времени, в котором записивставлены в эти исторические таблицы, поэтому я могу иметь карту от 1 до 10, указывающую на таблицу Table1_Hist_1
, а также иметь идентификатор записи = 3 в Table1_Hist_2
, просто потому, что идентификатор = 3 был закончен через 2 месяца и сохранен вследующая таблица.
Итак, кто-нибудь знает об эффективном подходе разделения таблицы на несколько таблиц с соответствующим отображением?