Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Отменить кэширование в SQL / 6 сообщений из 6, страница 1 из 1
17.07.2013, 06:34
    #38333590
sigmov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отменить кэширование в SQL
Столкнулся на днях с "проблемой" при оптимизации SQL-запроса.
Есть запрос. 1й раз Cache' выполняет запрос 2мин, а в последующие по 5 сек. Если долго не вызывать - ситуация повторится, так понимаю связано сие с кэшированием чего-то там(результататов запросов? промежуточных результатов? глобалов?), не столь важно. Главное что это сбивает "прицел" при оптимизации таких запросов - не поймешь, то ли ты запрос ускорил/замедлил, то ли Cache' прокэшировала/сбросила кэш........
Нужно чтобы каждый раз запрос исполнялся "на холодную".

Есть ли возможность как-то этого добиться?
...
Рейтинг: 0 / 0
17.07.2013, 09:28
    #38333642
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отменить кэширование в SQL
sigmov ,

Cached Queries (особенно раздел " Purging Cached Queries ")
...
Рейтинг: 0 / 0
17.07.2013, 11:17
    #38333789
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отменить кэширование в SQL
servit,

Мне кажется, тут работает не кэшировани запросов, а кэширование глобалов.
Поэтому при оценке оптимизации первые запуски не учитываем, учитываем запуски после того,как глобалы поднялись в кэш.
Для оценки сойдет.

Какие еще могут быть варианты
- перезапускать сервер для чистоты эксперимента перед замерами.
- попробовать снизить размер буфера глобалов до минимума.
...
Рейтинг: 0 / 0
18.07.2013, 07:22
    #38335015
MaWr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отменить кэширование в SQL
Еще вариант:
Отмонтировать/примонтировать базу, на которой делается select.

А вот в MSM была такая команда ZF, которая, по моему, как раз сбрасывала о очищала буфер глобалов.
...
Рейтинг: 0 / 0
18.07.2013, 22:13
    #38336233
D_De1mos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отменить кэширование в SQL
Мы меряем производительность участков кода путем подсчета глобальных ссылок и токенов. Замерять время почти бесполезно, т.к. на реальном сервере работает одновременно очень много людей, соответственно они одновременно нагружают дисковую подсистему.
На площадке для нагрузочного тестирования все же меряем время, но при этом выставив достаточно большой кэш, куда целиком влазят основные глобалы с данными и индексами, и запуская "прогрев", т.е. первый проход сценариев тестирования не учитывается в результате.
Запускать все на холодную решили, что не показательно, т.к. в кэше с вероятностью 99% находятся "горячие" индексы и справочники.
А так да, минимально гарантированное действие, чтобы сбросить кэш - отмонтировать/примонтировать базу.
...
Рейтинг: 0 / 0
19.07.2013, 14:09
    #38336978
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отменить кэширование в SQL
sigmov, на этом соревновании по оптимизации запросов был вот такой класс-оценки производительности запросов
#; datesrus.inc
#; 2012-04-06
#define GetGlobalReferences ##class(%SYS.ProcessQuery).Open($job).GlobalReferences
#define GetLinesExecuted    ##class(%SYS.ProcessQuery).Open($job).LinesExecuted
#define GetCommandsExecuted ##class(%SYS.ProcessQuery).Open($job).CommandsExecuted
#if $SYSTEM.Version.GetOS()="Windows"
  #define Delimiter "\"
#else
  #define Delimiter "/"
#endif
Include datesrus
Class DatesRUs.WorkShop
{

ClassMethod Run(pInit As %Boolean = 1, pTuneTable As %Boolean = 1)
{
    #dim SQLStats as %String
    #dim tRun as Run
    
    write !!
    do:pInit ..Init(pTuneTable)
    
    
    s SQLStats("Stime")= $ZH
    s SQLStats("Sline")= $$$GetLinesExecuted
    s SQLStats("Sglo") = $$$GetGlobalReferences

    #dim tIdx,tStart,tDiff,tResult,tStartGloRefs,tDiffGloRefs as %Numeric = 0
    #dim tTotalRows as %Integer = 0
    write !,"Method#",?10,"rowcount",?22,"  exec time",?35,"       glorefs"
    write !,$tr($j(" ",50)," ","-")
    for tIdx = 1:1:10
    {
        set tStart = $zh, 
            tStartGloRefs = $$$GetGlobalReferences
        set tResult = $classmethod($classname(),"Method"_tIdx) ;вызов запроса
        set tDiff = $zh-tStart, 
            tTotalRows = tTotalRows + tResult,
            tDiffGloRefs = $$$GetGlobalReferences - tStartGloRefs
        write !,$j(tIdx,2),?10,$j($fn(tResult,","),8),?22,$j($fn(tDiff,",",2),10)_"s",?35,$j($fn(tDiffGloRefs,","),14)
    }
    write !,$tr($j(" ",50)," ","-")
    s SQLStats("Etime") = $ZH
    s SQLStats("Eline") = $$$GetLinesExecuted
    s SQLStats("Eglo")  = $$$GetGlobalReferences
    
    
    w !,!
    w !,"Total # of rows: ",?25,$j($fn(tTotalRows,","),15)
    w !,"Global Refs:  ",?25,$j($fn((SQLStats("Eglo")-SQLStats("Sglo")),","),15)
    w !,"TotalTime: ",?25, $j($fn((SQLStats("Etime")-SQLStats("Stime")),",",2),15)_"s"
    w !,"Score:  ",?25,$j($fn((SQLStats("Eglo")-SQLStats("Sglo"))*(SQLStats("Etime")-SQLStats("Stime")),",",2),15)
    w !

    QUIT
}

ClassMethod Init(pTuneTable As %Boolean = 0)
{
    #dim tClass,tMethod as %String
    write !,"intializing..."
    #; purge query cache
    write !,"purging all query cache"
    do $SYSTEM.SQL.Purge()
    
    #; rebuild indices
    write !,"purge and rebuild all indices"
    for tClass = "Person","Customers","DateHistory","Employee","Profile","Survey" {
        //s gln="^DatesRUs."_tClass_"I" k @gln         
        for tMethod = "%PurgeIndices","%BuildIndices" {
            do $classmethod("DatesRUs."_tClass,tMethod)
        }   
    }
    #; run TuneTable (TuneSchema) to get the right results for your definitions
    if (pTuneTable)
    { 
        write !,"tuning tables"
        #; don't display
        do $SYSTEM.SQL.TuneSchema("DatesRUs",1,0)
        
    }
    write !
}

}
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Отменить кэширование в SQL / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]