2015-09-07 3 views
1

В настоящее время мы находимся в процессе преобразования производных таблиц db из INT в BIGINT с помощью команды Sybase ALTER. Одна из таблиц имеет 1,5 миллиарда строк, которые мы не можем преобразовать за один уик-энд (заработали почти 43 часа, а затем мы убили ее & восстановили дампы БД).Преобразование преобразования BIGINT Sybase ASE 15 7

Любое другое предложение для быстрого преобразования этой таблицы в BIGINT. Эта таблица содержит кластерные, уникальные и некластеризованные индексы.

Я думаю следующие решения: Можете ли вы предложить лучший способ сделать это?

  1. Создать новый столбец & обновить его старым значением, а затем удалить старый столбец, а затем переименовать новый столбец.
  2. BCP из данных, усечение таблицы, изменять структуру таблицы с новыми типами данных, то BCP в данных
  3. Partition таблицу в столики затем изменить таблицу & объединить его снова.
+0

Мой выбор: BCP вывести данные, обрезать таблицу, изменить структуру таблицы с новыми типами данных, затем BCP в данных, загрузка должна быть значительно быстрее, чем некоторое обновление на 1,5 миллиарда строк, и все, что вам нужно do - это изменение структуры таблицы. – theweeknd

+0

Может кто-то подтвердить, что загрузка быстрее в ASE, чем обновление, я думал об IQ, и теперь я видел, что он использует ASE, DML в ASE довольно быстро по сравнению с IQ, поэтому, возможно, я ошибся? – theweeknd

+0

Спасибо, но у меня есть индексы (1 кластер и 3 некластера) в этой таблице, поэтому нам нужно перестроить индексы, если я иду на BCP, - это занимает огромное время снова. – NaguG

ответ

0

Я не знаю, поможет ли это, но вы могли бы это рассмотреть. Если вы можете вывести и отсортировать данные, bcp'ing обратно в новую таблицу, то вы можете создать кластеризованный индекс WITH SORTED_DATA. Это экономит много времени на кластеризованном индексе. Сортировка может быть более быстрой, используя сортировку unix (и вы можете bcp на трубу и сортировать с этой прямой обратно на bcp-in из трубы.)

Если у вас есть сервер db с несколькими двигателями, вы можете воссоздать не- -кластеризованные индексы одновременно. Это сэкономит время (вы бы надеялись, что это будет примерно в третий раз, если предыдущий повторный сбор был в порядке.)

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

0

Изменить с помощью короткого временного окна.

Создайте новую таблицу без индексов и триггеров. Загрузите данные из «исходной таблицы» в «целевую таблицу». Создайте индексы с постфиксным кодом.

В окне времени: Вставьте и обновите записи, которые изменились с момента начальной загрузки. Переименуйте «исходную таблицу» в «таблицу источников резервного копирования». Переименуйте новую таблицу в имя исходной таблицы. Создайте триггеры в новой таблице. «Переименование индексов» новой таблицы. Подтвердите, что две таблицы имеют одинаковую информацию. Готов.

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