Имя: Пароль:
1C
1С v8
Кэширование на SQL
,
0 Dies
 
29.11.12
16:33
Возник вопрос. Делаем запрос по срезу последних из большого регистра сведений с отбором по отделам. В зависимости от количества записей по отделу, запрос выполняется от 15сек до 15мин. Причем последующие запросы выполняются значильно быстерее, как я понимаю из-за кэширования SQL сервером. Можно ли как-то управлять этим кэшированием?
1 Aleksey
 
29.11.12
16:34
не правильно понимаешь

Кэшировать может и сервер предприятия
2 shuhard
 
29.11.12
16:38
(0) что-то мешает посмотреть на сиквеле план запроса ?
3 rs_trade
 
29.11.12
16:43
(0) Управлять можно. Но не нужно. Оптимизатор сиквела сделает это гораздо лучше тебя.
4 Dies
 
29.11.12
16:48
Почему хочу управлять.

Делаю запрос с отбором Отдей1 (мало записей), выполняется 7сек.

Делаю запрос с отбором Отдей2 (много записей), выполняется 15мин.

Делаю запрос по Отдел2 после запроса по Отдел1 - 30сек.
Хочется чтобы запрос по Отделу2 выполнялся быстро.
5 BigShmax
 
29.11.12
17:00
делай запрос  по отделу1 и отделу 2
6 Dies
 
29.11.12
17:04
(5) так и хочу, но както не красиво
7 Diversus
 
29.11.12
17:07
А переиндексация, обновление статистики и т.д. на сервере SQL выполняются?
8 ptiz
 
29.11.12
17:11
Подумать про структуру регистра.
Либо сворачивать, либо отказаться от периодичности.
9 rs_trade
 
29.11.12
17:11
(4) Проверь (7) и попадание в индексы. Параметры кеширования сервера нельзя трогать если у тебя запрос плохо работает. Трогай запрос.
10 simol
 
29.11.12
17:13
(0)Точно ли там простой запрос выборка или есть соединения, условия и сложные поля?
11 Dies
 
29.11.12
17:43
Про (7) скорее всего делается.
(10) Простая выборка.
12 zva
 
29.11.12
19:46
Отбор в параметрах виртуальной таблицы или в условиях?
13 Dies
 
29.11.12
20:13
(12) в параметрах
14 Живой Ископаемый
 
29.11.12
20:27
В МС СКЛ как управлять не знаю. В ДБ2 знаю.
15 gallam
 
29.11.12
20:38
(0) я бы сначала проверил, моделируется ли ваша ситуация на тестовой бд без других сторонних нагрузок.
Далее если не моделируется, то вариантов много:-)  скорее всего статистика на скл устаревает. А если моделируется, то понять - проблемы на сервере приложения 1с или скл сервере. Проверить и подтвердить, что проблемы на скл и связанные с кешем легко - из профайлера скл достаете два запроса и выполняете из менеджмент студии, параллельно запустив счётчик page life expentency. Если замедление будет и счётчик будет опускаться к 0 - то проблема действительно в кеше .  Кстати кешем мс скл управлять нельзя - только наблюдать:-)
16 Diversus
 
29.11.12
21:58
(11) Это как "Скорее всего"? Проверьте.
17 Начать Транзакцию
 
29.11.12
22:09
Есть ли индекс по измерению Отдел?
18 Начать Транзакцию
 
29.11.12
22:16
Проверил, срез последних на регистре сведений из 5 000 000 записей делается <1.5 сек, с отбором по индексированному измерению.
19 mad hatter
 
29.11.12
22:50
(0) первый раз слышу про запрос на 15 минут.. может у вас там что нибудь неисправно? )
20 Fragster
 
гуру
29.11.12
23:38
если в РС нет индекса по отделу, то скорее всего делается тэйбл скан, соответственно оно все и кэшируется. ну или скуль такой умный, что соображает - сейчас сделали запрос по этой таблице, надо бы ее кэшировать, поскольку что-то часто ее вызывают...
21 Alex375
 
30.11.12
04:00
Время выполнения запроса будет зависеть не только от самих данных, но и от значений праметров запроса. Так как SQL строит на основании собранной статистики много планов запроса и по некоторым своим критериям выбирает оптимальный. И это правильно, так как использование индекса в некоторых случаях даже затратнее нежели чтение таблицы напрямую.
22 Speshuric
 
30.11.12
06:30
(0) Начать с плана запроса.
23 ILM
 
гуру
30.11.12
06:33
Жесткий проверить уже было? У вас диск рушится, а вы индексы перестраиваете...
24 Живой Ископаемый
 
30.11.12
06:37
2(20) он не умный, он просто ее кэширует после первого чтения. Размещает страницы в памямити и запоминает когда разместил. Если будет обращение к другим таблицам а памяти будет не хватать, он эти страницы постепенно заменит другими. Но если не будет, то так и будет держать их в памяти.