Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как ускорить апдейт?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4068
Есть таблица со 100 млн записей

CREATE TABLE [dbo].[s2](
	topic_id uniqueidentifier NOT NULL,
	dept_id uniqueidentifier NOT NULL,
	id int IDENTITY(1,1) NOT NULL,
        CONSTRAINT [PK_s2] PRIMARY KEY CLUSTERED ([id] ASC)
)


Хотелось бы избавиться от int IDENTITY, использовать sequence, например.

Делаю так:

alter table s2 add bigid bigint null

update s2 set bigid=id


и этот апдейт идет больше 2-х часов.

Можно ли как-то апдейтнуть быстрее?
10 янв 17, 14:50    [20089392]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37198
Ну, перелейте таблицу в новую. Заодно сэкономите на ребилде кластерного ключа.
10 янв 17, 14:59    [20089464]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
Ролг Хупин
Хотелось бы избавиться от int IDENTITY, использовать sequence, например.
Странное желание
10 янв 17, 15:43    [20089879]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4068
iap
Ролг Хупин
Хотелось бы избавиться от int IDENTITY, использовать sequence, например.
Странное желание


почему странное?

Уже нарвались на переполнение int IDENTITY, думал сделать bigint IDENTITY или sequence, вот, надо определиться.
10 янв 17, 16:13    [20090069]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
invm
Member

Откуда: Москва
Сообщений: 9683
Ролг Хупин
Уже нарвались на переполнение int IDENTITY
Почему нельзя
alter table ... alter column [identity-столбец] bigint
?
10 янв 17, 16:19    [20090102]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4068
invm
Ролг Хупин
Уже нарвались на переполнение int IDENTITY
Почему нельзя
alter table ... alter column [identity-столбец] bigint
?


он ПК в мастертаблице и ФК в нескольких подчиненных, проверю, что будет по времени.
10 янв 17, 16:21    [20090125]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4068
invm
Ролг Хупин
Уже нарвались на переполнение int IDENTITY
Почему нельзя
alter table ... alter column [identity-столбец] bigint
?


проверил, долго отрабатывает возвращение ПК, и дает ошибку в случае переполнения лога и т.д..
10 янв 17, 18:40    [20090750]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31816
Ролг Хупин
Уже нарвались на переполнение int IDENTITY, думал сделать bigint IDENTITY или sequence, вот, надо определиться.
sequence не защитит от переполнения.
Можно, например, просто перейти на bigint
А выбор IDENTITY или sequence зависит от архитектуры и логики вашей системы, зачем это смешивать.
10 янв 17, 19:56    [20090979]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить апдейт?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31816
Ролг Хупин
проверил, долго отрабатывает возвращение ПК, и дает ошибку в случае переполнения лога и т.д..
Перелейте в новую таблицу, с минимальным протоколированием.
Создайте таблицу сразу с IDENTITY - калстерным ПК, и перелейте туда, с включённым TABLOCK и в режиме симпл базы.
10 янв 17, 20:02    [20091011]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить