Я пытаюсь найти способ миграции из двух таблиц в одной базе данных. Эта миграция должна быть как можно быстрее, чтобы минимизировать время простоя.Быстрая миграция данных в одной базе данных
Выражаясь на примере позволяет сказать, что у меня есть человек, стол, как так:
person_table -> (идентификатор, имя, адрес)
Таким образом, человек как Id , имя и адрес. Моя система будет содержать миллионы реестров пользователей, и было решено, что таблица людей должна быть разделена. Для этого я создал новую таблицу:
partitioned_person_table -> (номер, имя, адрес, partition_time)
Теперь эта таблица будет содержать дополнительный столбец partition_time. Это ключ раздела для этой таблицы, так как это раздел диапазона (один раздел каждый час).
Наконец, мне нужно найти способ, чтобы переместить всю информацию из person_table к partitioned_person_table с лучшей производительностью.
Первое, что я мог бы попробовать это просто создать такое заявление:
INSERT INTO partitioned_person_table (идентификатор, имя, адрес, partition_time) SELECT, идентификатор, имя, адрес, CURRENT_TIMESTAMP ОТ person_table;
Проблема заключается в том, что, когда речь идет о миллионах реестров это может стать очень медленным (также временное табличное пространство не может быть в состоянии обрабатывать всю эту информацию)
- Мой второй подход заключается в использовании ОБМЕННАЯ ЧАСТЬ способ. К сожалению, я не могу этого сделать, потому что таблицы содержат разные номера столбцов.
Есть ли какой-либо другой способ, который я могу выполнить с наилучшей производительностью (меньше простоев)?
спасибо.
Вы считали [переопределение онлайн-таблицы] (https://docs.oracle.com/cd/E11882_01/server.112/e25494/tables.htm#ADMIN11667)? –
@AlexPoole благодарим вас за ответ. Я еще не слышал о переопределении Online Table, но вы пытаетесь использовать это, чтобы я мог добавить дополнительные столбцы в таблицу для обмена разделами? –
Насколько велик он сейчас? Вы говорите, что «будут содержать миллионы людей», которые сегодня не говорят, насколько велика. – tbone