20.01.2019, 18:44 | #21 |
Роман Долгополов (RDOL)
|
Лечится но не излечивается. Проблема там основная с удалением записей из дельты, а не с селектами/вставками. Игры с индексами (которые мы тоже проходили) облегчают положение дел. Но на тысячах (слово было вставлено не для красного словца, это действительно так) параллельных постоянно работающих разносок дельты (как складская, так и финансовая) постоянными вставками/ударениями моментально превращаются по физической структуре в хлам (околонулевое к-во записей, пара гигабайт размер, фрагментация индексов 99,99%), с которой сервер адекватно работать отказывается. Пробовали с кластерными индексами и без кластерных и раком и боком и вверх ногами. Пробовали перестроения индексов по шедулеру. Но онлайн перестроение при такой нагрузке ничего не исправляет, офлайн исправляет, но при этом само всё лочит. Настоящие темповые таблицы проблемы не облегчают, а именно решают.
|
|
|
За это сообщение автора поблагодарили: AlGol (3), trud (10), Logger (20), Raven Melancholic (5). |
21.01.2019, 05:47 | #22 |
Мрачный тип
|
Она и идет про такие таблицы с самого начала и от tablestr()/fieldstr() с ними пользы не больше чем от стеклянной бутылки при забивании гвоздей.
Вариант, согласен. Минусы все те же - искать ID таблицы/полей придется по имени, передаваемому строковой константой со всеми сопутствующими радостями ловли ошибки в run-tume. Может все-таки tableName2Id() ? Спасибо, кэп
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 21.01.2019 в 05:50. |
|
21.01.2019, 10:09 | #23 |
Участник
|
Цитата:
Код: mInventSumDeltaKeyMap::tmpTableInit(); Код: trecord::init(this.getBalanceDeltaTableId()); То есть, существует ли вариант получения TableId таблицы таким образом, чтобы сохранялись перекрестные ссылки, чтобы про изменения например наименования сообщал компилятор при компиляции перед релизом, а не разъяренный пользователь после релиза. А мне интересен технический момент: если я в InventUpd_* буду использовать эти временные InventSumDelta, то смогу ли обратиться именно к этому конкретному экземпляру временной таблицы в InventOnHand? Ясно, что если этот подход помогает, то с чем-то можно смириться. |
|
22.01.2019, 20:31 | #24 |
Роман Долгополов (RDOL)
|
Никаких чудес. За всеми этими обертками tablename2id() и dictTable.makeRecord(). С учетом неявных предположений об одинаковых FieldId в таблицах с решеткой и без, отсутствие перекрестных ссылок на инициализацию вообще за грех можно не считать.
X++: tablename2id('#mInventSumDeltaKeyTmp'); |
|
23.01.2019, 09:42 | #25 |
Роман Долгополов (RDOL)
|
Цитата:
|
|
23.01.2019, 10:34 | #26 |
Участник
|
Цитата:
X++: InventUpdateOnhandGlobal::mustAddInventSumDeltaOnhand(itemId) |
|
Теги |
dispose, inventsumdelta, ledgerbalancestransdelta, tempdb |
|
|