gifts2017

Кешируем SQL

Опубликовал Алексей Плутенко (Noy) в раздел Администрирование - Системное

SQL Любит кушать память, но вот как он это делает - секрет...

Из личных опытов заметил, что после перезапуска SQL сервера некоторое время чувствуется определенное подтормаживание при работе в 1С.

Логично предположить, что SQL не знает какие именно данные нам понадобятся при работе и подгружает их в оперативную память по мере необходимости.

Данная обработка производит чтение "актуальных" данных из базы, которые потом остаются в оперативной памяти SQL сервера, что несколько ускоряет работу...

 

Имеет смысл использовать обработку только после перезагрузки SQL-сервера - например при входе первого пользователя в базу. Обработка не кеширует бухгалтерских проводок/итогов и записей журналов расчетов.

 

Обработка требует наличия 1cpp.dll

 

Учитывайте, если вы хотите использовать подобное кеширование у себя в системе то обратите внимание, что данная обработка универсальна и кеширует все справочники/регистры/документы. Возможно вам нужно кешировать не все виды...

Скачать файлы

Наименование Файл Версия Размер
cashe.ert 70
.ert 37,50Kb
07.10.09
70
.ert 37,50Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Плутенко (Noy) 06.10.09 19:08
Если что не так написал - не пинайте (sql только изучаю). Субъективно скорость работы (серфинг по справочникам/журналам) быстрее, если перед этим запустить обработку.
2. Альтаир (Altair777) 06.10.09 19:17
А проверочку на скульность базы не надо вставить? :-)
3. Алексей Плутенко (Noy) 06.10.09 21:23
(2) наверное надо, но обработка для программистов, а не для пользователей...

поправлю завтра ;)
4. Сергей (Che) Коцюра (CheBurator) 07.10.09 00:48
из того что вынес из семинара софтпоинтцев: скуль кеширует данные. и это хорошо. но если составить неоптимальный запрос - то можно "закешировать" кучу ненужных данных, которые выдавят из кеша действительно актуально-нужные данные...
5. Владислав Чинючин (vcv) 07.10.09 10:19
Есть еще возможность фиксирования таблиц в памяти. Тоже тематично.
http://www.softpoint.ru/article_id33.htm
6. Алексей Плутенко (Noy) 07.10.09 11:53
(4) Полностью согласен! Но все-таки хочется чувствовать себя умнее железки и руководить процессом самому...

(5) Спасибо за ссылку! Полезная статья!
7. Сергей (Che) Коцюра (CheBurator) 07.10.09 16:09
(6) если полазить по сатйу софтпоинтцев и рикцентра - можно мнооогог чего накопать полезного...
8. Алексей Плутенко (Noy) 07.10.09 16:24
(7) Самое обидное, что раньше там часто бывал, да вот раньше знаний было меньше, меньше понимал - вот и "изобретаю теперь велосипеды" которые там же скорее всего и видел.
9. Сергей (Che) Коцюра (CheBurator) 07.10.09 18:21
(8) не баись! не ты один такой! ;-)
10. Валентин Терёхин (Valet) 07.10.09 21:58
Как вариант развития обработки:
Интереснее было бы "прогреть" SQL "реальными" данными. К примеру делать снимок таблиц, которые в кэше занимают больше всего, сохранять его и при рестарте сервера прокачивать именно их.
11. Алексей Каменец (leshik) 08.10.09 07:59
Хотелось бы вставить небольшую ложку дегтя :-)
1С++ форум, Dmitro
И процитировать краткое резюме:
Вобщем: маленькая база, при большом объеме памяти может и разместится в кеше ито не вся.
А вообше для баз солидных размеров задача вообще не правильная - это не нужно.

Но в целом - ставлю конечно же +
12. Алексей Плутенко (Noy) 08.10.09 12:01
(11) Ну код из ссылки грузит всю базу в память, мой же код грузит не все подряд - по скриншоту видно что скуль после кеширования сожрал 440 Мб - это я запускал на базе в 12Гб...
конечно же к таким операциям стоит относится очень осторожно. Например мой код тоже не оптимален: если в справочниках есть строки неограниченной длины - он их "прокеширует"...
В реалиях своей базы я кеширую не все справочники (только необходимые), а в некоторых справочниках только отдельные поля - то есть всю ту информацию, которая выводится в визуальных формах и/или используется при проводке документов...
13. Алексей Плутенко (Noy) 08.10.09 12:17
12+ Журналы, регистры и документы тоже грузятся только "актуальные"...
14. Евгений Долиновский (Dolly_EV) 28.10.09 12:23
мне не помогло :cry:
по крайней мере, справочники (формы списков) притормаживают точно так же...остальное не проверял (т.к. борюсь в данный момент именно с тормозом списков справочников)

и еще момент, если это дело использовать - как отловить момент запускалась уже обработка или нет?
Или более точно сформулируем: как узнать, что запуск 1С на данной базе - первый (еще никого нет в базе)
15. Алексей Плутенко (Noy) 28.10.09 13:17
(14) в твоем случае эта обработка вряд ли поможет. Лучше запусти Отладчик - там замер производительности и "побегай" по форме (могут тормозить функции получения остатка - меняй на прямой запрос "ВыполнитьСкалярный", всякие там проверки Выбран() замени на ПустоеЗначение и тд тп)
16. Алексей Плутенко (Noy) 28.10.09 13:18
15+ Получение периодики тоже нормально подвешивает формы списка
17. Евгений Долиновский (Dolly_EV) 28.10.09 13:42
(16) по следам этого топика:
http://www.forum.mista.ru/topic.php?id=408845&page=3

уже ВСЕ ОТКЛЮЧИЛ! (остатки, цены, ВСЕ!) все равно тормозит... ладно это не в тему немножко))
18. Алексей Плутенко (Noy) 28.10.09 14:28
(17) Судя по той теме косяк был найден...еще в мае. Или избавление от периодики не помогло?
Если так, то попробуй отдай базу vde69 - пусть покрутит. Или мне скинь - я конечно не суперпроф, но может что дельное найду
19. Евгений Долиновский (Dolly_EV) 28.10.09 15:44
ВСЕ! Нашлось! "?(Товар.Алкоголь.Выбран()=1,2,0)", мать его висело на колонке с пиктограммой... а колонка уууууузенькая и неприметная ;)
20. Андрей Пушкин (Akela) 17.11.09 11:21
Нехрен перегружать так часто сервер SQL
u_n_k_n_o_w_n; +1 Ответить