"Kovalenko Dmitry" ...
>
> >     Удаление создаёт версию записи и не трогает индексы.
> > Инсерт создаёт версию записи и, конечно, трогает индексы
> > Апдейт, не затрагивающий индексированные колонки, тоже
> > создаёт версию записи и не трогает индексы.
>
> >     Так что получается, что вариант с апдейтом дешевле
> > в твоём случае
>
> >     Простой эксперимент тебе поможет ;)
>
> Вчера провел ужасающий по своей
> простоте эксперимент - провел
> перестройку структуры этой ужасной
> таблицы. В течении которой изменились
> значения колонок в ~17 и ~25млн записях.
> Сборка мусора в 25 млн записях шла чуть
> больше одного часа. На нашем мегаконе.

    ODS11 по вам плачет... или вы по ней ;)

> Перевел программу с тупого insert (перед
> ним срабатывал триггер, делающий delete)
> на вызов SP, которая типа гораздо умнее.
>
> В результате - обновления колонок
> входящих в индекс теперь вообще нет.
> Удалений, собственно, тоже.
>
> Статистика по одной транзакции.
>
> None - 4839 (вообще ничего не обновлилось)
> Update state - 693 (колонки вне индексов)
> Insert - 3150
>
> До этого "None"+"Update state" выполнялись как
> "Delete"+"Insert"

    Вот тут ты сэкономил 2 операции в индексе,
одна из которых (удаление старого ключа) на ODS < 11
весьма нетороплива

> А таких транзакций от 5 до 20 (не считая
> брызг).
>
> Полагаю, теперь индексы этой таблицы
> оставлены в покое. Ура!

    ;)

-- 
Хорсун Влад


Ответить