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

Откуда:
Сообщений: 660
разик за пару месяцев одна немаленькая таабличка
должна получить данные из другой...получает но при
этом все одибисишные клиенты отваливаются - таблица
не отвечает во время выполнения апдейта

можно ли сделать сиквелом чтобы время выполнения
былобы пару часов но таб-ца при этом не блокировалась

обновление проходило бы в фоновом режиме ?
5 янв 13, 15:38    [13726054]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Обновлять порциями по несколько тысяч записей.
5 янв 13, 15:59    [13726122]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 660
этож нада будет гдето сохранять инфу о строках
которые обновились....криво как-то....
наверно клиента над писать корый п таймеру
все тихо будет делать в отдельном потоке....
5 янв 13, 16:10    [13726149]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
ToSangYong
Guest
SangYong,
Например во временной таблице и обновлять в цикле.
5 янв 13, 19:14    [13726676]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Добавить в таблицу поле UNIQUEIDENTIFIER NULL,
получить в переменную значение NEWID() перед циклом,
а в цикле записывать значение этой переменной в изменяемых записях таблицы.
5 янв 13, 21:40    [13727077]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
когда все спят
Guest
SangYong,

ночного окна у вас нет? чтобы ночью обновлять.
6 янв 13, 12:44    [13728590]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
А что значит "получить данные от другой"? - это UPDATE существующих строк или INSERT новых строк?

PS Если совсем всё х..во, то используйте обновление в курсоре. Да,- меддленно и "черезжопу",- но будет работать и ни кто НЕ будет отваливаться... Главное - в транзакцию НЕ заворачивайте..,- атопи3дец... :(
6 янв 13, 15:40    [13728933]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
Crimean
Member

Откуда:
Сообщений: 13147
версия сервера? остальные коннекты только читают или и пишут тоже?
8 янв 13, 12:03    [13735391]     Ответить | Цитировать Сообщить модератору
 Re: Update выполняется 15 мин  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
SangYong,

Можно курсором для начала обновлять построчно все записи (пока не придумается алгоритм как порционно по несколько тыс. строк разом обновлять). Здесь обязательно порционные апдейты делайте в разных транзакциях (ну или явно не открывайте перед апдейтом транзакцию).
Можно (и нужно) оценить эффективность плана запроса апдейта, возможно у вас идет полный скан таблицы при апдейте, а апдейт всей таблицы не требуется.
Скорость апдейта возможна снижена из за фрагментации страниц данных (в моей практики был случай недавно где перестройка индексов на таблице где апдейт проходил 5 минут помогла - сократив время апдейта до 50 секунд).
8 янв 13, 14:45    [13735979]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить