|
![]() |
#1 |
Модератор
|
Коллеги, одна таблица обновляется одним оператором UPDATE
Эта операция атомарная, в ней нет промежуточного состояния "первую строку обновили, вторую еще нет" Точно так же оператор X++: update ledgerTrans set RecId = RecId + 1 ACID это называется ![]()
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: kashperuk (3). |
![]() |
#2 |
Участник
|
Ой, да. Это я Сусанин, не посмотрев код, не в ту степь повел.
![]() Почему-то подумал, что вместо обновления потабличного (что намного производительнее, причем) делается позаписное (по RecId, и для каждого пробежка по всем таблицам). ![]() Посмотрел код, действительно, все записи обновляются одним запросом, поэтому проблема эта - вообще не проблема. ![]() |
|
![]() |
#3 |
Участник
|
А можно дефрагментировать RecID только для 1 таблицы
Доброго утра!
Ввиду большого кол-ва операций достигли ситуации когда RecId пошел на второй круг и в таблице CustInvoiceTrans начала появляться ошибка "Запись уже существует". Собственно, одна две записи допавляются без проблем, а вот заказ на 100 строк уже не разносится. Т.к на других операциях ошибок не замечено, решено провести дифрагментацию RecId но только для ОДНОЙ таблицы. Т.е. дефрагметировать RecId в таблице CustInvoiceTrans и при этом счетчик глобальный счетчик RecId не трагать, так как nextValue порядка 1 млрд, а записей в CustInvoiceTrans около 100 млн. Соответственно, если дефрагментировать RecId только в этой таблице то все последующие вставки в таблицу будут проходить безошибок. Вопрос: проделывал ли кто подобное? Аксапта 3.0 SP5, MS SQL 2005 Спасибо. |
|
![]() |
#4 |
Участник
|
Добрый день.
Дефрагментацию recId выполняли уже несколько раз. На форуме уже писали, что и где надо подправить для ускорения. Вся операция на 80 gb базе занимает около 3.5 часов. Поддерживаю glibs и TasmanianDevil. |
|
Теги |
ax3.0, faq, recid, дефрагментирование recid |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|