Имя: Пароль:
1C
1С v8
Замер времени выполнения запросов
0 Kaidend
 
02.03.12
13:08
Всем привет.
Иногда бывают ситуации, когда нужно взять какой-то запрос, поизменять его немного и определить время выполнения с целью поиска наиболее оптимального варианта запроса.
Можно дописать стандартную консоль запросов, чтобы она выводила время выполнения запроса или, например, взять какую-то готовую консоль, где эта функция уже есть. Это не проблема, в общем.

Проблема в том, что 1С (а может СУБД) кэширует данные, получаемые из БД. Так что первый раз запрос выполняется, допустим, 45 секунд, второй раз - 10 секунд, третий раз - почти мгновенно. Это затрудняет определение того, какой из нескольких вариантов запроса работает быстрее.

Кто-нибудь знает, как решить эту проблемку?
1 Kashemir
 
02.03.12
13:08
Чисть кэш на скуле
2 Kaidend
 
02.03.12
13:09
К сожалению, нет доступа к серверу СУБД.

Еще какие-нибудь варианты? :)
3 Kashemir
 
02.03.12
13:10
Консолей со временем выполнения предостаточно, допилить опять же минутное дело. Я себе прикрутил http://infostart.ru/public/78001/
4 Kashemir
 
02.03.12
13:10
(2) Другие мне не известны и вряд ли существуют.
5 Maxus43
 
02.03.12
13:11
нормальная это ситуация. просто 10 раз выполняй запрос и общее время смотри, другой запрос тоже 10 раз
6 Kaidend
 
02.03.12
13:11
Проблема не в том, чтобы допилить, я же написал об этом в (0).
Проблема в кэшировании результатов запроса то ли СУБД, то ли сервером приложений 1С, что мешает точно определять время выполнения запроса.
7 Kashemir
 
02.03.12
13:12
(6) Задал 2 вопроса - получил 2 вопроса
8 Kashemir
 
02.03.12
13:12
+(7) *ответа
9 Kaidend
 
02.03.12
13:12
(5) а если оба запроса похожи и отличаются только одной строкой, допустим? :) тогда нужно выжидать некоторое время между сериями испытаний, чтобы данные исчезли из кэша? :)
10 Maxus43
 
02.03.12
13:16
(9) разница в доли секунды во время исполнения - не стоит оптимизации. либо запрос кривой либо нет.
11 Kaidend
 
02.03.12
13:19
(10) Нет, я к тому, что если запросы похожие, то, когда ты начнешь исполнять второй запрос в первый раз, он успешно возьмет данные из кэша, помещенные туда во время десятого выполнения первого запроса.
12 Maxus43
 
02.03.12
13:20
(11) ну ёлки палки.
Делай так :
Первый
Второй
Первый
Второй
10раз Первый - запомнил время
10раз Второй - запомнил время
13 Kaidend
 
02.03.12
13:23
(12) и второй запрос ВСЕГДА будет использовать данные, накэшированные первым :)
14 Maxus43
 
02.03.12
13:24
(13) он их использует при
Первый
Второй
Первый
Второй

потом первый будет использовать 2-го, а 2-й первого. погрешность будет минимальна.

Хочеш знать наверняка - план запроса на скуле и там замеряй
15 Kaidend
 
02.03.12
13:26
(14)а, ну, в принцие, да