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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.03.2005, 16:47   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Разница NotInTTS и Found
Поскажите, в чем отличие между кешированием таблиц
NotInTTS и
Found

Из документации непонятно как внутри транзакций ведут себя запросы к таблицам с типом кеширования Found.

1. Данные берутся из кеша или вычитываются заново ?
2. Если из кеша, то как гарантировать внутри транзакции, что мы получили актуальные данные ?

Если же вычитываются заново из базы, то тогда в чем разница между NotInTTS и
Found ?
Старый 03.03.2005, 16:56   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Разница в поведении при
PHP код:
select forupdate 
внутри транзакции
Старый 05.03.2005, 11:21   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Запросы к БД при разных CacheLookup
Для опытов я выбрал табличку InventLocation
PHP код:
static void Job5(Args _args)
{
    
InventLocation      inventLocation;
    
InventLocationId    locId 'MW'bug 'Нет склада';
    ;

    
flush inventLocation;


    
inventLocation InventLocation::find(locId);
    
inventLocation InventLocation::find(locId);
    
inventLocation InventLocation::find(locIdtrue);

    
inventLocation InventLocation::find(bug);
    
inventLocation InventLocation::find(bug);
    
inventLocation InventLocation::find(bugtrue);

    
ttsbegin;
    
inventLocation InventLocation::find(locId);
    
inventLocation InventLocation::find(locId);
    
inventLocation InventLocation::find(locIdtrue);

    
inventLocation InventLocation::find(bug);
    
inventLocation InventLocation::find(bug);
    
inventLocation InventLocation::find(bugtrue);
    
ttscommit;

    
inventLocation InventLocation::find(locId);
    
inventLocation InventLocation::find(locId);
    
inventLocation InventLocation::find(locIdtrue);

    
inventLocation InventLocation::find(bug);
    
inventLocation InventLocation::find(bug);
    
inventLocation InventLocation::find(bugtrue);

И вот какая картина в профайлере SQL:
None
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
TTSBEGIN
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='Нет склада'
TTSCOMMIT
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'

NoneInTTS
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
TTSBEGIN
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='Нет склада'
TTSCOMMIT
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'

Found
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'
TTSBEGIN
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='Нет склада'
TTSCOMMIT
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
SELECT * FROM InventLocation A WHERE INVENTLOCATIONID='Нет склада'

FoundAndEmpty
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A(NOLOCK) WHERE INVENTLOCATIONID='Нет склада'
TTSBEGIN
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='MW'
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='Нет склада'
TTSCOMMIT

EntireTable
SELECT * FROM InventLocation A(NOLOCK)
TTSBEGIN
SELECT * FROM InventLocation A(UPDLOCK) WHERE INVENTLOCATIONID='MW'
TTSCOMMIT

Как говорится "почувствуйте разницу"
За это сообщение автора поблагодарили: kashperuk (5), sukhanchik (8), Logger (8), alex55 (1), Molchun (1), Kabardian (3).
Старый 05.03.2005, 11:44   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Большое спасибо за исчерпывающий ответ !
Старый 05.03.2005, 12:11   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Интересно, получается все же, что внутри транзакции
None
и
NoneInTTS
ведут себя по разному.

Доверяй документации, но проверяй !
Старый 05.03.2005, 12:32   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Спасибо.
Перенес в базу знаний.
Старый 18.09.2008, 12:35   #7  
skopinman is offline
skopinman
Участник
 
1 / 10 (1) +
Регистрация: 18.09.2008
Цитата:
Сообщение от Logger Посмотреть сообщение
Интересно, получается все же, что внутри транзакции
None
и
NoneInTTS
ведут себя по разному.

Доверяй документации, но проверяй !
Добрый день, вот что сказано в документации:
When inside a transaction, the record is read once from database and subsequently from cache.

То есть нигде не сказано, что внутри транзакции записи не кэшируются, наоборот, кэш используется, если запись закэширована внутри TTS.
По моему так.

Знатоки, поправьте, если я не так что-то понял!
Теги
cache, cache lookup, faq, кэширование, полезное, таблица, транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
xPropertySetData::unpack : Property Not Found :1156 Yan Dex DAX: Программирование 5 27.05.2014 07:17
Курсовая разница. Ax3.0 Lyuboff DAX: Функционал 4 13.05.2008 10:46
Трансляция 4.0 и 3.0: есть ли разница Arahnid DAX: Функционал 1 19.08.2007 12:26
курсовая разница в АХ glance DAX: Прочие вопросы 0 27.07.2007 13:09
Разница между пустой Группой на форме, и группой в которую включён элемент 3oppo DAX: Программирование 8 26.12.2006 10:47

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

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

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