Показать сообщение отдельно
Старый 05.03.2005, 11:21   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (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).