Имя: Пароль:
IT
Админ
SQL. Первый раз запрос выполняется медленнее. Как избавиться?
,
0 DirecTwiX
 
19.03.13
22:55
Первый раз запрос вполняется раз в 100 дольше. Кеш отключил
1 Живой Ископаемый
 
19.03.13
23:02
от чего избавиться?
2 H A D G E H O G s
 
19.03.13
23:02
Кеш отключил.

Как?
3 be-may
 
19.03.13
23:03
а кэш отключил чтобы и остальные разы тоже медленно выполнялись, да ?
4 Cap_1977
 
19.03.13
23:03
(0) Никак. Первый раз строиться план запроса и компилируется сам запрос. В хранимки его затолкай.
5 Лефмихалыч
 
19.03.13
23:11
(0) или иди читай матчасть, или вон из профессии. Ты влез в область, которую методом тыка уже не постичь, нужна теоретическая база, которой у тебя нет и которую на форуме ты не получишь
6 wade25
 
19.03.13
23:13
Кто где учился) http://v8.1c.ru/overview/Term_000000564.htm
7 DirecTwiX
 
19.03.13
23:14
(2) SET @@global.query_cache_size=0;
SET @@global.query_cache_type=OFF;

(5) Из какой профессии? Я для себя всё делаю

(3)Да. Для дебага нужно
8 wade25
 
19.03.13
23:15
+(6) Темой не попал)
9 Живой Ископаемый
 
19.03.13
23:43
(7) и как убеждаешьс что он отключился?
10 be-may
 
19.03.13
23:44
(5) суров.

(7) в первый раз, как уже сказали, план выполнения строится.
С этим не сделаешь ничего. Плюс данных еще нет в памяти. Обращение к диску (первый раз) всегда дольше, чем обращение к памяти (последующие разы)
Вот думаю, чтобы делала я..
- посмотрела бы план выполнения, посмотрела бы как выполняется запрос
- посмотрела бы сам запрос, возможно можно его оптимизировать
- ну и сами данные. Обращение к индексированным полям позволяет побыстрее запросу выполняться.
11 IamAlexy
 
19.03.13
23:52
(7) на курсах вещали что кеш платформенный, то есть его в принципе не отключить.
и на курсе по производительности платформы на этом специально заостряли внимание для того чтобы при замерах производительности не радоваться несуществующим результатам..
12 Живой Ископаемый
 
20.03.13
07:48
2(10) по его предположению в память (для последующих разов) данные не попадают так как он отключил кэш
13 ЧеловекДуши
 
20.03.13
08:12
(0) Если первый запрос строится долго, а второй быстро...
То вас кривые запросы, и ошибочное представление об отладке.
Ибо во второй раз скуль данные уже выгребает почти в кэшированном виде :)
14 ЧеловекДуши
 
20.03.13
08:12
(12) Какой кэш... он поди понятие не имеет как работает скуль :)
15 ЧеловекДуши
 
20.03.13
08:13
(10) Я бы в первую очередь посмотрел на сам запрос, ибо есть методы написания, которые будут и при втором разе выполнятся долго :)
16 Живой Ископаемый
 
20.03.13
08:35
2(14) откуда такая уничижительная предпосылка? например в (7) он показывает как отключал. Но не показывает как проверял что он действительно отключился.
2(13) что значит "почти" и опять же, он утверждает что отключил кэш
17 DGorgoN
 
20.03.13
08:40
(10) Вау, молодец..
18 Живой Ископаемый
 
20.03.13
08:43
2(10) с чего вы взяли что ему нужно чтобы запрос выполнялся быстро? Ему нужно чтобы первый и последующий разы он выполнялся одинаковое время. (зачем ему это нужно, и почему он просто первый раз не исключит из опытов - это отдельный разговор)
19 ЧеловекДуши
 
20.03.13
08:55
(18) Вам не кажется, что требовать от программы, что бы она работала с одной и той же скоростью, как это делает 1С, (т.е. медленно), это не от большого ума?

Больше склонен к тому, что у автора есть некая обработка, которая запускается не зависимо от времени выполнения запроса к SQL, т.е. автор не умеет отлавливать процесс завершения работы запроса. А от этого и его требование, что бы все было тупо медлен, но с "предсказуемой" периодичностью.
А вот тот факт, что запрос так же может выполнятся медленно в зависимости от самих данных, автор чего-то не упоминает.

...Или я просто сегодня груб?... (я не хотел)...
20 ДенисЧ
 
20.03.13
08:58
чтобы гарантированно убедиться, что кеш не влияет на скорость запроса, нужно после каждого выполнения оного запроса перезапускать комп с сервером скуля.
Хотя и то не факт...
21 Живой Ископаемый
 
20.03.13
09:03
2(19) мне кажется что вы не груб, а просто не можете себе представить, что человек не пишет программу которая бы должна работать, а например тестирует что-то. То есть вы навоображали каких-то предпосылок, насколько хватило вашей фантазии, и теперь пытаетесь на них ответить.
Но это правда все равно упущение автора, он в конце концов мог появиться и сказать чего же на самом деле хочет
22 упс
 
20.03.13
09:08
(0) с mysql почти не работал, посмотри вот эту ссылку: http://www.stableit.ru/2010/02/querycache-mysql.html там есть пример - как посмотреть реальное значение query cache size.
В принципе, даже если кэш установлен в 0, может быть у тебя дисковая подсистема умная и сама какую-то часть данных кэширует.
23 MrStomak
 
20.03.13
09:21
(19) Вижу человека, не проводившего долгие часы-дни в отладке производительности запроса на нефайловой базе.
24 Sorm
 
20.03.13
09:25
(0) Посмотри, нельзя ли запрос разбить на более мелкие подзапросы, поместить результаты во временные таблицы, проиндексировать.
25 be-may
 
20.03.13
09:55
(18) мне так показалось, т.к. это наиболее логично.
(20) мне кажется, достаточно будет сделать стоп-старт службе скл сервера.
26 упс
 
20.03.13
10:01
(20)(25) для MS SQL Server гораздо проще и быстрее выполнить DBCC DROPCLEANBUFFERS.
27 Живой Ископаемый
 
20.03.13
14:00
2(25) Если читать предыдущие ветки автора, можно понять что а) не логично.
б) вообще не имеет отношения к 1Совской базе
2(22) Если это не МС СКЛ, но в Вин-среде, то безусловно файловая система умная, и помещает первый раз считанные файлы в системный кэш, это только МС СКЛ в Вин-среде читает низкоуровнево, мимо системного кэша, в свой собственный.
28 ДенисЧ
 
20.03.13
14:03
(25) нет.
(26) нет.

Есть ещё кеши контроллера диска.
29 be-may
 
20.03.13
14:57
(27) у меня нет столько времени, чтобы читать все ветки автора. Да и желания нет.
"Правильно поставленное техническое задание является половиной решения" (с)
30 sapphire
 
20.03.13
15:03
хм...ТС.. Мехмат МГУ...
Грустно.
31 Живой Ископаемый
 
20.03.13
15:35
2(29) понятно, читать времени нет, безосновательно фантазировать на тему что же имел автор - есть.
32 be-may
 
20.03.13
16:02
(31) госпадя..
да автору уже и дела нет до этой темы, а вы тут все бубубу.
33 sapphire
 
20.03.13
16:06
(32) Почему бы и не поворчать?
34 AHgpuXa
 
20.03.13
17:02
(0) мможет так?
declare @p1 int
set @p1=null
exec sp_prepare @p1 OUTPUT, NULL, N'SELECT *
FROM table1
'
exec sp_execute @p1
exec sp_execute @p1
exec sp_execute @p1
35 DirecTwiX
 
21.03.13
01:30
(30) Что именно тут грустного?
Винда может так данные кешировать?
36 Живой Ископаемый
 
21.03.13
08:00
2(35) не может, а точно это делает, читай (27)
37 Skom
 
21.03.13
08:35
(26) так жестче))
alter system flush shared_pool
alter system flush buffer_cache
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn