|
![]() |
#1 |
Участник
|
Цитата:
X++: InventUpdateOnhandGlobal::mustAddInventSumDeltaOnhand(itemId) |
|
![]() |
#2 |
Роман Долгополов (RDOL)
|
Лечится но не излечивается. Проблема там основная с удалением записей из дельты, а не с селектами/вставками. Игры с индексами (которые мы тоже проходили) облегчают положение дел. Но на тысячах (слово было вставлено не для красного словца, это действительно так) параллельных постоянно работающих разносок дельты (как складская, так и финансовая) постоянными вставками/ударениями моментально превращаются по физической структуре в хлам (околонулевое к-во записей, пара гигабайт размер, фрагментация индексов 99,99%), с которой сервер адекватно работать отказывается. Пробовали с кластерными индексами и без кластерных и раком и боком и вверх ногами. Пробовали перестроения индексов по шедулеру. Но онлайн перестроение при такой нагрузке ничего не исправляет, офлайн исправляет, но при этом само всё лочит. Настоящие темповые таблицы проблемы не облегчают, а именно решают.
|
|
|
За это сообщение автора поблагодарили: AlGol (3), trud (10), Logger (20), Raven Melancholic (5). |
![]() |
#3 |
Роман Долгополов (RDOL)
|
Никаких чудес. За всеми этими обертками tablename2id() и dictTable.makeRecord(). С учетом неявных предположений об одинаковых FieldId в таблицах с решеткой и без, отсутствие перекрестных ссылок на инициализацию вообще за грех можно не считать.
X++: tablename2id('#mInventSumDeltaKeyTmp'); |
|
Теги |
dispose, inventsumdelta, ledgerbalancestransdelta, tempdb |
|
|