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

Откуда: Киев
Сообщений: 6
Практическое применение ... интеграция с АСУТП (каждые пол минуты происходит опрос по многим записям)

в результате для таблици t1(a,b) вида
a b
1 2
3 1
...
происходят update t1 set a = 1 where b = 2

95 % таких update в итоге не меняют значение а.

1. Как можно определить, создают ли такие update нагрузку на лог.
2. Можно ли уменшить нагрузку записав update t1 set a = 1 where b = 2 and a <> 1 превратив тем самым для 95% случаев такой update в select
25 окт 09, 22:06    [7836142]     Ответить | Цитировать Сообщить модератору
 Re: генерирует ли запись в лог update если изменяемое и новое значение равны друг другу?  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Павел Малежик
1. Как можно определить, создают ли такие update нагрузку на лог.
2. Можно ли уменшить нагрузку записав update t1 set a = 1 where b = 2 and a <> 1 превратив тем самым для 95% случаев такой update в select

1. Убедиться, что база в режиме восстановления full, сделать while 1=1 update .......... и посмотреть, будет ли расти лог.
2. Проверить, насколько упадет/вырасте производительность, замерив любым подходящим способом время выполнения обоих вариантов запросов.
25 окт 09, 23:18    [7836233]     Ответить | Цитировать Сообщить модератору
 Re: генерирует ли запись в лог update если изменяемое и новое значение равны друг другу?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Павел Малежик,
попробуйте. В любом случае добавление условия a<>1 сильно хуже сделать не должно. Вот только насчет превращения UPDATE в SELECT вы по-моему погорячились
25 окт 09, 23:49    [7836279]     Ответить | Цитировать Сообщить модератору
 Re: генерирует ли запись в лог update если изменяемое и новое значение равны друг другу?  [new]
aleks2
Guest
Павел Малежик,

Любой UPDATE журналируется. Как вы себе представляете сравнение 10Гб BLOB-a при обновлении поля?
26 окт 09, 05:25    [7836530]     Ответить | Цитировать Сообщить модератору
 Re: генерирует ли запись в лог update если изменяемое и новое значение равны друг другу?  [new]
ChA
Member

Откуда: Москва
Сообщений: 10989
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=229723
26 окт 09, 05:54    [7836556]     Ответить | Цитировать Сообщить модератору
 Re: генерирует ли запись в лог update если изменяемое и новое значение равны друг другу?  [new]
Павел Малежик
Member

Откуда: Киев
Сообщений: 6
Хорошо, попробую записать проверки в where. Через недельки 2-е отпишусь про результат, интуитивно кажется что запись в лог должна уменьшиться.
Спасибо за ссылку на обсуждение с функцией fn_dblog, буду разбираться.
26 окт 09, 12:18    [7837645]     Ответить | Цитировать Сообщить модератору
 Re: генерирует ли запись в лог update если изменяемое и новое значение равны друг другу?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
Павел Малежик,
попробуйте. В любом случае добавление условия a<>1 сильно хуже сделать не должно. Вот только насчет превращения UPDATE в SELECT вы по-моему погорячились
a<>1 в общем случае недостаточно. Ведь это выбросит из рассмотрения строку с a IS NULL
26 окт 09, 12:25    [7837705]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить