|
![]() |
#1 |
Участник
|
Цитата:
...скорее всего, сам разработчик не разобрался. 1. ПРОИЗВОДИТЕЛЬНОСТЬ ни в коем случае НЕ стоит изменять режим кэширования на продакте. Конечно, попробуйте на тестовой базе. И убедитесь, что отключение кэширования таблицы PriceDiscTable немедленно приводит к DDOS'у SQL сервера мелкими запросами по этой таблице. И это неспроста. Изначальные разработчики Аксапты не боялись мелких, простых и частых запросов к SQL именно потому, что отлично работал кэш. Поэтому зачастую лучше написать пару простых запросов в цикле (они будут брать данные из кэша) вместо сложного SQL-запроса с join. 2. ПРОБЛЕМА ПО СУТИ Сама постановка проблемы является надуманной. Дело в том, что кэш так или иначе обновится максимум через 15 минут. В многопользовательской системе 15 минут обычно не влияют на работу пользователей. Пользователь1 обновил цены, в течение 15 минут у Пользователя2 цены гарантировано будут обновлены. Если в течение этих 15 минут у Пользователя2 будут задействованы старые цены - обычно ничего критичного не происходит. Это нормально. 15 минут становятся проблемой, когда появляется 1 (один) тестер и гоняет бизнес-процессы. Тогда да, наличие кэша и период до 15 минут становятся проблемой. Но это проблема тестирования, а не реальных бизнес-процессов. В тестировании перед каждым новым бизнес-процессом надо тупо сбрасывать кэши командой "Tools \ Caches \ Refresh data". |
|
|
За это сообщение автора поблагодарили: AlexeyS (1), gl00mie (3). |
![]() |
#2 |
Участник
|
Проблема отсутствия искомой цены не может быть надуманной, ибо для того и нужна система, чтоб получать нужные данные.
Тут ещё нужно понять, о каком кэше идёт речь. Дело в том, что класс PriceDisc_Price для поиска цен использует класс PriceDisc, который найденные значения добавляет в глобальный кэш SysGlobalObjectCache. Так что вряд ли эта проблема связана с кешированием таблицы. Что такое "кеширование класса", я, честно говоря, не знаю. В классе PriceDisc в двух местах есть баги, которые "теряют" найденную цену. Вкратце, они в цикле присваивают ссылку на буферную переменную. X++: // Begin: Alexey Voytsekhovskiy Not to lose the buffer! actualDiscTable = priceDiscTable.data(); //actualDiscTable = priceDiscTable; // End: Alexey Voytsekhovskiy Думаю, есть смысл сообщить куда следует.
__________________
Felix nihil admirari |
|
|
За это сообщение автора поблагодарили: kashperuk (5), gl00mie (2), alex55 (1), S.Kuskov (5), Kabardian (7). |
![]() |
#3 |
Участник
|
Цитата:
обратите внимание, что в вашем утверждении ничего не сказано про время ![]() Цитата:
которые вместо использования стандартных механизмов выполняют закат солнца вручную. |
|
![]() |
#4 |
Участник
|
Цитата:
о времени давно уже сказано до нас, что оно - деньги. я тут писал модуль симуляции розничных цен для крупнейшего поставщика автозапчастей, и уверяю тебя, эти люди порвут кого угодно, если новая цена не будет появляться чуть раньше реального времени. ![]() вторая часть комментария эмоциональная, но не конструктивная. глобальный кэш -- вполне себе стандартный механизм, как раз созданный для того, где кеширование таблиц не очень эффективно. впрочем, это, как я понимаю, тема для обширных дискуссий. тем более, что используется он не для всех случаев при поиске цен. например, тот же приснопамятный метод findDisc: X++: // To avoid flooding the cache the most granualated setup isn't cached. // ADAXBasis - Begin cacheMode = !(_itemCode == ADAXTableCategoryGroupAll::Table && _accountCode == ADAXTableGroupOfContractGroupAll::Table); // ADAXBasis - End Для моего конкретного случая, когда нужно загружать сотни тысяч новых цен, я это дело отключил. А вот как бы сделать так, чтоб Ваня заинтересовался косяком, про который я написал, и пофиксили бы это дело в консерватории...
__________________
Felix nihil admirari |
|
![]() |
#5 |
Участник
|
Да, но только проблема этого кеширования в том, что кеш сбрасывается только для АОСа, на котором происходило "шевеление", а на других оставшихся АОСах глобальный кеш остается неизменным
![]()
__________________
Sergey Nefedov |
|
![]() |
#6 |
Участник
|
ничего подобного! почитайте же по ссылке что написано: кэш реально global.
__________________
Felix nihil admirari |
|
![]() |
#7 |
Участник
|
Цитата:
![]()
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: kashperuk (3). |
![]() |
#8 |
Участник
|
Цитата:
![]() Цитата:
![]() |
|
![]() |
#9 |
Участник
|
AX2012 R2, R3
__________________
Felix nihil admirari |
|
![]() |
#10 |
Участник
|
__________________
Ivanhoe as is.. |
|
![]() |
#11 |
Участник
|
кстати, а откуда дровишки про эти 15 минут?
__________________
Felix nihil admirari |
|
|
|