Имя: Пароль:
1C
1С v8
Как правильно остудить кеш MSSQL?
,
0 arsik
 
гуру
05.02.19
17:03
Сейчас делаю так:
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO


Не слишком ли это? Вы как делаете?
1 Вафель
 
05.02.19
17:03
а зачем?
2 arsik
 
гуру
05.02.19
17:12
(1) Для отладки запросов. Тупо проверить 2 варианта. Который легче.
3 Вафель
 
05.02.19
17:12
перезапускай службу
4 arsik
 
гуру
05.02.19
17:13
(3) Скуль?
5 Kashey
 
05.02.19
17:16
(0) DBCC FREEPROCCACHE - это для всех баз,

1. select name, database_id from sys.databases
// получаем идентификатор нужной БД.

2. DBCC FLUSHPROCINDB(<database_id>)
// очищаем кэш по id БД.
это для определённой базы
6 Вафель
 
05.02.19
17:17
(5) FREEPROCCACHE - это кэш планов запросов, а не кэш данных
7 Kashey
 
05.02.19
17:33
(6) Прав, невнимательно прочёл. Это когда статистику обновляем чистим кэш плана запросов.
8 Вафель
 
05.02.19
17:36
то что тс прописал - кэш данных чистит. но кэш процедур тоже бы неплохо
9 Velman
 
05.02.19
17:43
(0) Это помогает когда пользователь с одного компа на другой прыгнул на время отпуска например сотрудника, а у него 1С принтер по умолчанию запоминает старый?
10 arsik
 
гуру
06.02.19
08:40
(9) Нет. Это из другой повести.
Почему я задал такой вопрос.
потому как оптимизирую запрос. Но Получается как - если запустить (0) то 2 варианта запроса, старый и новый, работают, по времени, примерно одинаково. Но в продуктивной базе второй запрос работает быстрее раза в 2.
Я понимаю, что некоторые данные практически всегда в кеше скуля. Но вот как правильнее найти самый продуктивный вариант.
Тестируя 2 варианта в рабочей базе первым запросом мы подтянем некешированные данные, а второй будет уже , с учетом кеша быстрее работать.

Нет ли случаем такого, что бы можно было, кеш откатить на минут 10 назад?
11 arsik
 
гуру
06.02.19
08:56
Или другой вариант.
Можно как то указать скулю не кешировать данные временно.
По сути из консоли запросов, перед запросом отключать кеширование, а после включать снова.
12 АНДР
 
06.02.19
09:17
(10), (11) А зачем? Тебя ведь не теория а практика интересует.

А что планы запросов говорят?
13 Маша с уралмаша
 
06.02.19
09:24
(10) Если ты думаешь что проблема в кэше, включи статистику чтений и выполни запрос в SSMS, посмотри сколько там было физических.

Можно просто посмотреть счетчик buffer cache hit ratio, если он норм, то и проблема не в этом.

Но проблема 100% не там где ты ее ищешь. Выложи актуальные планы в формате sqlplan, только так можно точно сказать в чем разница.
14 arsik
 
гуру
06.02.19
09:25
(12) Планы не смотрел. Там запрос многоэтажный.
Ну вот что бы в реальной базе испытать 2 варианта, без влияния кеша.
15 cons24
 
06.02.19
09:28
(10) (14) какой-то неправильный подход.
Что мешает запустить запрос1, потом запрос2, потом запрос1, потом запрос2 - несколько раз. Записываешь показания каждого.
В результате будет видно работу обоих запросов на прогретом кэше.
На непрогретом особо смысла не вижу - ведь в продуктиве запрос будет работать на прогретом.
А если запрос стартует на холодном раз в (неделю?) - зачем его оптимизировать?
16 cons24
 
06.02.19
09:29
У тебя консоль запросов какая? Самая простая? Или хотя-бы время каждого пакета можно увидеть?
17 arsik
 
гуру
06.02.19
09:32
(16) Мне как раз нужен вариант на прогретом кеше,  но не горячем, а твой вариант покажет на горячем. В нем все данные в памяти.
18 АНДР
 
06.02.19
09:56
(17) Тут только планы актуальные разгребать + смотреть в контексте работы пользователей. А то выяснится, что к моменту твоих тестов, кто-то такой же отчёт уже собрал руками подручными средствами.