AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.08.2011, 16:02   #1  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Какой CacheLookup выбрать? Почему?
Наверняка же у каждого из разработчиков имеется свод критериев, согласно которым любой таблице может быть назначен определенный способ кеширования.
Ни в одной документации не нашел четких рекомендаций о том, какая таблица какой метод кеширования должна иметь(не конкретные таблицы, а так сказать разновидности по содержимому и назначению). Ну кроме EntireTable наверно. А ведь еще бывают случаи, когда кеширование вообще не стоит использовать, но опять же об этом я не нашел никакой информации от MS.
Давайте обсудим - полезный топ получится.

Последний раз редактировалось Андрей К.; 24.08.2011 в 16:08.
Старый 24.08.2011, 16:14   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Разница NotInTTS и Found
Старый 24.08.2011, 16:17   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Вот тут хороший пост есть, показывающий разницу между возможными режимами кэширования. Разница NotInTTS и Found
А выбор какого-то определённого режима я думаю напрямую должен зависит от степени распределённости и интенсивности изменения/чтения данных в таблице.

UPD.: Со ссылкой уже опередили
Старый 24.08.2011, 16:19   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Только еще нужно помнить что он написан для 3-ки
Возможно для 2009-й будут отличия. - я их не проверял.
Старый 24.08.2011, 17:04   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
Ни в одной документации не нашел четких рекомендаций
..
я не нашел никакой информации от MS
Let me Google that for you
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: lev (1).
Старый 25.08.2011, 07:20   #6  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
все это я уже читал.
тем не менее хотелось бы уточнить:
если в кеш попал результат запроса
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
а затем кто-то изменяет данную строку, то при очередном селекте я не получу актуальные данные?

Последний раз редактировалось Андрей К.; 25.08.2011 в 07:34.
Старый 25.08.2011, 07:27   #7  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А выбор какого-то определённого режима я думаю напрямую должен зависит от степени распределённости и интенсивности изменения/чтения данных в таблице.
вот именно об этом и хотелось поговорить.
степень распределенности - это грубо говоря какой процент от всех записей наиболее часто используется?

вопрос в лоб: у каких таблиц кэширование стоит вырубить? и почему?
Старый 25.08.2011, 08:24   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
если в кеш попал результат запроса
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
а затем кто-то изменяет данную строку, то при очередном селекте я не получу актуальные данные?
Так точно
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
степень распределенности - это грубо говоря какой процент от всех записей наиболее часто используется?
Я под этим имел ввиду вероятность чтения/изменения данных одновременно несколькими клиентами. Т.е. на сколько эта вероятность высока или низка.
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
вопрос в лоб: у каких таблиц кэширование стоит вырубить? и почему?
Ну, например, для таблицы InventSum (Остатки в наличии), с моей точки зрения, жёсткое кэширование записей противопоказано. Т.к. её значения с большой вероятностью могут быть изменены процесами других конкурентных пользователей. А например для таблицы UserInfo (Параметры пользователя) кэширование можно включить относительно безопасно. Наверное замечали что после изменения параметров пользователя они применялись только после перезапуска клиентской сессии? Если вас такое поведение устраивает то кэширование можно оставить
За это сообщение автора поблагодарили: Андрей К. (1).
Старый 25.08.2011, 13:22   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
все это я уже читал.
тем не менее хотелось бы уточнить:
если в кеш попал результат запроса
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
а затем кто-то изменяет данную строку, то при очередном селекте я не получу актуальные данные?
Зависит от многих факторов.

Во-первых, от того, где закэшировано - на сервере или на клиенте.
Если кэш на клиенте (и запрос там же) - то изменения не будут видны.
Серверный кэш - общий (в рамках одного AOS'а) и изменение данных на одном из подключений, так же изменяет данные в кэше. Так что пользователи на том же AOS'е изменения увидят (через запросы на сервере)

Во-вторых, какой тип кэширования выбран и используется ли транзакция во время выборки - для notInTTS используется разный кэш внутри и вне транзакции

В-третьих, сколько времени прошло со времени попадания записи в кэш - в 24 часа кэш сбрасывается (есть параметр, позволяющий уменьшить период, но на 2009-й у меня не заработало, а на 3.0 - не пробовал)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Logger (3), alex55 (3), Андрей К. (1), S.Kuskov (3).
Теги
best practice, как найти, как правильно, кэширование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Массовое создание СФ. Почему берет номера из списка удаленных СФ? mazzy DAX: Функционал 6 21.03.2011 22:35
Как скрыть лишние DataSource у кнопки "Выбрать" Poleax DAX: Программирование 14 24.07.2008 11:43
Как узнать по объекту RecordSortedList, из какой таблицы в нем записи? gl00mie DAX: Программирование 4 20.02.2008 15:39
Невозможно выбрать запись в 'LedgerBalancesDim' ('LedgerBalancesDim') Beast-L DAX: Программирование 19 06.08.2007 13:05
почему форма сразу закрывается ? puz DAX: Программирование 3 09.09.2003 11:56

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:21.