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

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

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

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

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

А вот в MSM была такая команда ZF, которая, по моему, как раз сбрасывала о очищала буфер глобалов.
...
Рейтинг: 0 / 0
Отменить кэширование в SQL
    #38336233
D_De1mos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы меряем производительность участков кода путем подсчета глобальных ссылок и токенов. Замерять время почти бесполезно, т.к. на реальном сервере работает одновременно очень много людей, соответственно они одновременно нагружают дисковую подсистему.
На площадке для нагрузочного тестирования все же меряем время, но при этом выставив достаточно большой кэш, куда целиком влазят основные глобалы с данными и индексами, и запуская "прогрев", т.е. первый проход сценариев тестирования не учитывается в результате.
Запускать все на холодную решили, что не показательно, т.к. в кэше с вероятностью 99% находятся "горячие" индексы и справочники.
А так да, минимально гарантированное действие, чтобы сбросить кэш - отмонтировать/примонтировать базу.
...
Рейтинг: 0 / 0
Отменить кэширование в SQL
    #38336978
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Отменить кэширование в SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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