Как ускорить 1С за 5 минут – Протокол Shared Memory (1С 7.7)

18.10.22

База данных - HighLoad оптимизация

Вариант для SQL 77

Есть статья для 1С 8 //infostart.ru/public/307547/. Читал у некоторых авторов, что данное поведение для 77 не включить, типа увы, только 8 так умеет. Но оказалось умеет, для этого необходимо прописать в строку

сетевое_имя_компа_с_базой; Driver={SQL Native Client};

обратите внимание что сетевое имя, это именно имя, а не айпишник

Кстати, драйвер обычно устанавливается через скачивания в инете Download ODBC Driver for SQL Server

или через файл sqlncli_x64.msi в одном из каталогов установки сервера бд

Есть еще вариант Driver={SQL Server}; но с ним у меня протокол не включался

Возможно нужно поставить галочку "Разрешить протокол общей памяти" в программе Пуск-выполнить- cliconfg

После всех манипуляций получаем строчку -- network protocol: LPC 

 

См. также

HighLoad оптимизация Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Конфигурация на 1С 7.7, показывающая блокировки на MS SQL сервере и доменных пользователей по SPID. Используется 1С++ и классы.

1 стартмани

09.11.2021    4903    9    ShoDm    17    

11

HighLoad оптимизация Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Что Вы узнаете из этой статьи? • Рассмотрены возможности ускорения «1С:Предприятие 8» в небольших организациях • Показана процедура включения протокола Общая память (Shared Memory) • Продемонстрирована диагностика использования Shared Memory

1 стартмани

23.10.2014    79294    30    Насипов Фарит    1    

54

Чистка данных HighLoad оптимизация Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

По статье "Зачем в 1С нужно периодически пересчитывать итоги по регистрам?" http://infostart.ru/public/177171/ Обработка для 7.7, чтобы посмотреть что же творится в БД для SQL

1 стартмани

13.03.2013    23451    54    maxpiter    15    

8

HighLoad оптимизация Системный администратор Программист Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Обратились ко мне с вопросом по теме форума: http://forum.mista.ru/topic.php?id=558772 Автор темы: "DennizzM". Название: "v7: 1c v7.7 ошибки транзакции - как отловить виновника?" Текст с сокращениями: "Вопрос наверняка не новый... Итак - есть база 1c v7.7 (самописная конфа). Периодически у пользователей возникает ошибка при проведении транзакции. База работает под терминалом. Нагрузка на дисковую подсистему небольшая, CPU на нуле, RAM до черта свободного. Вопрос вот в чем - как отловить инициатора первой транзакции которая всех держит? Итак - как мне выкрутиться? ;) ...я не имею права и не могу лезть внутрь конфы и модифицировать ее.".

13.07.2011    26605    hogik    16    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 815 18.10.22 12:14 Сейчас в теме
Ну а где замеры ДО и ПОСЛЕ ? Не убедили, что так можно ускорить.
2. Dionisiy 4 18.10.22 15:58 Сейчас в теме
(1) За пять минут?! Только галочки можно успеть поставить, а замеры и проверки это очень долго
3. Ветер в поле 3 19.10.22 09:12 Сейчас в теме
Спасибо! На одном моем сервере такое можно проверить. Попробую протестировать.
Но на больших базах всё равно сервера терминалов и сервер бд разделены и, соответственно, никакого прироста не будет.
Вообще скорости добиваешься скорее правильными алгоритмами, чем правильной настройкой. Вряд ли ускорение при использовании Общей памяти будет больше 20%. В то время как алгоритмы дают в разы, десятки и сотни раз ускорения. Чуть позже продемонстрирую
4. mshi 19.10.22 11:23 Сейчас в теме
Небольшая демонстрация преимущества алгоритмов. Например, необходимо получить коды справочника по списку элементов. Если делать это простым перебором, то, во-первых, достаточно сильно нагружается SQL сервер, а во-вторых это банально медленно.

Стандартный метод отрабатывает за 0.77 с на 1000 элементов. Т.е. делается чуть больше 1200 запросов в секунду. В принципе, это неплохая скорость.
оСпр = СоздатьОбъект("ЗапросКСправочнику");
	оСпр.Инит("Пациенты");
	оСпр.ВыбиратьПервые = 1000;
	оСпр.ДобавитьРеквизит("ТекущийЭлемент");
	спЭлем = оСпр.ВыполнитьЗапрос("СписокЗначений");
	
	НачВремя = _GetPerformanceCounter();
	
	Для К = 1 По спЭлем.РазмерСписка() Цикл
		ТекКод = спЭлем.ПолучитьЗначение(К).Код;
	КонецЦикла;
	
	КонВремя = _GetPerformanceCounter();
	
	Предупреждение("Отработано за " + (КонВремя - НачВремя) / 1000 + " с.");
Показать


Но можно это же сделать несколькими запросами. В данном случае у меня получилось 0.024 с, т.е. в 30 раз быстрее.
оСпр = СоздатьОбъект("ЗапросКСправочнику");
	оСпр.Инит("Пациенты");
	оСпр.ВыбиратьПервые = 1000;
	оСпр.ДобавитьРеквизит("ТекущийЭлемент");
	спЭлем = оСпр.ВыполнитьЗапрос("СписокЗначений");
	
	НачВремя = _GetPerformanceCounter();
	
	оСпр = СоздатьОбъект("ЗапросКСправочнику");
	оСпр.Инит("Пациенты");
	оСпр.ИспользоватьСписокЭлементов(спЭлем);
	оСпр.ДобавитьРеквизиты("ТекущийЭлемент,Код");
	тзЭлем = оСпр.ВыполнитьЗапрос();
	
	тзЭлем.ВыбратьСтроки();
	Пока тзЭлем.ПолучитьСтроку() = 1 Цикл
		ТекКод = тзЭлем.Код;
	КонецЦикла;
	
	КонВремя = _GetPerformanceCounter();
	
	Предупреждение("Отработано за " + (КонВремя - НачВремя) / 1000 + " с.");
Показать


Причем оптимизированная версия работает быстрее даже на DBF версии семерки - 0.028 против 0.007.
5. Ветер в поле 3 19.10.22 20:46 Сейчас в теме
На работе добавил пример оптимизации алгоритмов - верхний комментарий. Там ускорение в разы.
Перевел один свой сервер на Shared Memory. Получилось не сразу. Мне пришлось писать полное имя драйвера, т.е. строка была такая: TSLAB; Driver={SQL SERVER Native Client 10.0};
Ну и провел тесты. Тест тот же самый, что и в комментарии 4. Т.е. чтение 1000 элементов справочника.
На протоколе TCP/IP время 0.800 с. После перевода на Shared Memory получил в районе 0.75 с. Таким образом имеем ускорение в районе 7%. Для бесплатной прибавки неплохо, но она ничего не решит глобально. Если что-то тормозило, то оно и продолжит это делать.
За науку спасибо! Думал, что 7.7 меня уже ничем не удивит.
Dionisiy; +1 Ответить
6. Dionisiy 4 24.10.22 04:27 Сейчас в теме
(5) Спасибо что поделились!
SQL SERVER Native Client 10.0, видимо в драйверах ОДБС у Вас такое название, у меня без цифр. Да я сам в шоке, что в адрес сервера можно что-то подобное дописывать, наверное там еще что-то можно использовать, например Packet Size, если используется Jumbo в сети, то можно увеличить пакет для конкретного соединения с базой.
7% времени это прилично для одной ситуации, возможно изменение коснулось других ресурсов: процессора, памяти, диска и т.д.
У меня рабочая база норм работает где-то неделю, замеров не делал, заметных изменений нет.
Науки тут не было, просто метод научного тыка.
7. Meistersinger 13.01.23 12:24 Сейчас в теме
(5) Попробуйте параллельно что-нибудь запустить в режиме shared memory. У нас на семерках эта штука работала быстрее только при одном сеансе.
Оставьте свое сообщение