Как работает разбиение таблицы и отображение? - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть база данных с одной критической таблицей, которая широко используется и запрашивается.Время жизни данных в этой таблице разделено на два этапа: 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 месяца и сохранен вследующая таблица.

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

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