Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   1С 7.7 ТИС База ДБФ Опять задолбали блокировки (http://forums.kuban.ru/f1040/1s_7_7_tis_baza_dbf_opyat-_zadolbali_blokirovki-3916245.html)

Чучундер 22.03.2013 22:07

Сюда стукнись: [url]http://infostart.ru/community/profile/2905/[/url] - это один из немногих людей, который шарит во внутренностях клюшек. Может подскажет или заинтересуется твоей проблемой.

Путевый лист 22.03.2013 22:09

39 - Чучундер. Не совсем так, потому что у меня в ПриЗаписи документы бухт формируются и проводятся, иногда автоперемещения - наверное из-за этого тоже блокировки

Reaper 22.03.2013 22:12

39-Чучундер > Будь добр, запусти две сессии клюшек, одну в отладке. Поставь точку останова в обработчике записи поступления и в отлаживаемой сессии запиши новое поступление - пусть постоит на точке. А в неотлаживаемой сессии запиши или проведи любой документ. Сделаешь? а то нету у меня клюшков...

Путевый лист 22.03.2013 22:29

43-Reaper Процедура Записать() действительно с блокировкой выполняется как я понял, причем там сразу куча всего происходит - и тем больше чем больше всяких "примочек" в журнале записываемого документа. А вот процедура призаписи() - это нечто другое.

Путевый лист 22.03.2013 23:04

41 - Чучундер. Самое фиговое, что все что я нагуглил на эту тему - собственно никаких понятных ответов не дает. Я четко вижу, что при УстановитьНовыйНомер возникает ожидание блокировки. Причем вылеты бывают нечасто, просто как бы база тормозит (как говорят с пеной у рта мои юзеры).
Ходжику я написал!!!

Чучундер 23.03.2013 00:42

(45) при установке нового номера блокировка есть - накладывается на время содания нового номера. но это должно пролетать мгновенно. вотпочему у тебя там клинит - вот это ХЗ - либо это как-то связанос УРБД или где-то есть явные ДЛИННЫЕ транзакции, внутри которых есть установка нового номера - вот тут пока явная транзакция не будет закрыта - и будет блокировка таблицы номеров для других юзверей

Чучундер 23.03.2013 01:04

(43) хотел написать в категоричном тоне, что даже проверять не буду, но я ж, [filolog]сцуко[/filolog], осторожный.. ;-)
.
итого. рассмотрим примерчик, документ, в доке:
.
Процедура ПриЗаписи()

Предупреждение(имяПользователя()+"-1");
Сп=СоздатьОбъект("Справочник.Материалы");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если (Цена>0) И (Материал.Выбран()=1) Тогда
Сп.НайтиЭлемент(Материал);
Сп.Цена=Цена;
Сп.Записать();
КонецЕсли;
КонецЦикла;
Предупреждение(имяПользователя()+"-2");

КонецПроцедуры

.
запускаем два сеанса, в таком варианте никаких траблов не возникает.
в таком варианте

Чучундер 23.03.2013 01:25

ПЛ, вот тебе ссылка нка статью [url]http://infostart.ru/public/87339/[/url]
Только не спеши ставить.
Почитай, подумай и задай вопросы Владимиру повторно.

Чучундер 23.03.2013 01:28

И личку прочитай pдесь!

VZ 23.03.2013 01:39

... И не надо для тайминга никакого wsh. Каб бы не любил его Reaper.
Достаточно функции _GetPerformanceCounter()

VZ 23.03.2013 01:55

И еще: даже единственный файл размером больше гига ставит крест на работу с дбф.

Чучундер 23.03.2013 04:41

ну не гиг, а чуть больше... и hogik это полечил, как и проблему с 16млн записей в однйо таблице (на этой неделе напоролся лично)

СthuIhu 23.03.2013 12:37

[b]user1c[/b], хорош истерить, а?..
по размеру всех(!) файлов базы данных ставить диагнозы - тупость.
пример: 5Гб, при этом самые большие - индекс общего журнала (360М) и таблица проводок (250М). реальный рабочий вариант (5 лет от прошлой свертки). и попробуй только заикнуться про "извращения" и про "сворачивай срочно".

Путевый лист 23.03.2013 13:04

52-Чучундер Ссылку и комментарий уже читал и долго читал. Думаю что размер файла 1 ГБ как-то не очень большое значение имеет, иначе бы у меня индексы валились и вообще база бы не работала - сталкивался с таким давно и вылечил.
Что касается установить новый номер (перфиксИБ и префикс фмрмы) - то наверное эти траблы как-то свзаны с УРБД - только непонятно как. И есть ли это трабл - тоже непонятно.
У меня накладные, счета-фактуры, доверенности, ПКО и РКО, платежки и банковские выписки имеют сложный префикс, который зависит и от ПрефиксИБ и от Префикс фмрмы. В других документах этого нет, но например заявки покупателей тоже цепляют префикс фирмы - хотя там четко стоит, что только префикс ИБ должен быть

Чучундер 23.03.2013 14:49

(54) просто так префикс ИБ не поставится. это надо программно говорить. если этого не сказать - отрабатывает программный код [filolog]ипо[/filolog] установке префикса по фирме и все.

Путевый лист 23.03.2013 15:15

55 - Чучундер - У меня стоит ПрефиксАвтонумерации в глобальном модуле

А кроме того везде где установить новый номер - как раз программно и отработаны эти ситуации

Чучундер 23.03.2013 15:23

(56) чудес не бывает ;-) установка префиксов отрабатывается штатнов глЗаполнитьШапку и соотв. глПриИзмененииФирмы

user1C 25.03.2013 09:10

[b]Cthulhu[/b], ты если такой умный, автору помоги, ога? и эта, не истери...

Путевый лист 26.03.2013 10:38

У меня очень много обращений к константе ПрефиксИБ. Жутко много. Когда интерактивно вводится документ, то его номер присваивается с учетом ПрефиксАвтонумерации(). А вот когда программно, то у меня масса установитьНовыйНомер(Константа.ПрефиксИБ)
А ведь обращение к константам тянет за собой весь массив периодических реквизитов, а он не маленький. Хочу при начале работы системы глобальной переменной присвоить значение константы - ведь ее значение никогда не меняется или раз в 100 лет.
Даст мне это ускорение???
И еще: заметил что у менеджеров, которые работают на обычных компах по вай-фай (точка доступа висит на стене)скорость работы намного медленнее моей
И еще: мой комп подключен к 24-портовому свичу и работает шустро, комп соседу подключен к 5-портовому роутеру и у него работает быстрее чем у тех кто по вай-фай, но медленнее, чем у меня

Helen1986 26.03.2013 11:35

(59) за подключение к базе через вайфай - лишать половых достоинств сразу и без помилований.
ВСЯ БАЗА РАБОТАЕТ СО СКОРОСТЬЮ САМОГО МЕДЛЕННОГО КЛИЕНТА

еще - роутеры по возможности замени на свичи. роутер в режиме свича тормозит

обращение Константа.ИМЯ замени через глобальную переменную. как планируешь - при старте. добавь только заполнение этой константы еще в одно место - при изменении этой константы переменная должна перезаполняться.
ЭТО РЕШЕНИЕ НА ЗАМЕНУ - ВЕРНОЕ

Helen1986 26.03.2013 11:40

ВСЯ БАЗА РАБОТАЕТ СО СКОРОСТЬЮ САМОГО МЕДЛЕННОГО КЛИЕНТА


[img]http://img.amigos.lv/img/photo/0/41/4307/3VrTxCV0vVIKo.jpeg[/img]

Путевый лист 26.03.2013 12:11

helen1986 Спасибо за поддержку. Надо конечно по-любому переходить на новый сервер, но все-таки по-возможности очевидные уже невооруженным глазом тормоза я все-таки уберу. Сообщу о результатах.
Заодно хотел спросить: как сделать цикл, не загружающи процессор??? Через таймер???

Helen1986 26.03.2013 12:16

(62) я не смотрела реализацию таймера в 1це
разработчики платформы ваще .....

попробуй таймер и реализацию через WSH

Путевый лист 26.03.2013 12:29

Helen1986 (63) Да у меня все равно формекс используется, так что воспользуюсь его таймером
Еще принтеры по умолчанию порой не ищутся. Может надо бы через rdp их цеплять, а у меня как сетевые все

oxo 26.03.2013 12:32

«И еще: заметил… медленнее, чем у меня» [59] — это к чему? после: «База ДБФ 6 ГБ на терминальном сервере» [0]. Доступ терминальный/нет??

oxo 26.03.2013 12:38

«цикл, не загружающи процессор» [62] — это как? с принудительным таймаутом в теле… Helen1986, не замечаешь? у пациента банальная истерика

Halyavnik 26.03.2013 12:58

(62) Заодно хотел спросить: как сделать цикл, не загружающи процессор??? Через таймер???

Один из вариантов такой:
Предупреждение( "Ждите, господа, ждите...", 1 );

Даст секундную задержку без загрузки проца. Коряво, зато исключительно штатными средствами платформы. :)

По вопросам торможения - тестовую базу перевести на SQL, запустить перепроведение+мониторинг, а затем курить логи.
Определить список наиболее часто использующихся и(или) ресурсоемких запросов (как, например, Константа.ПрефиксИБ), затем решать, как можно оптимизировать код, дабы подобные запросы или не использовались (вывод в справочнике товаров текущих остатков) или выполнялись быстрее.
Посмотрев запросы, выполнить оптимизацию БД:
- выбрать необходимый порядок измерений в регистрах.
- на нужные поля справочников и документов создать индексы (Внимание! Любая реструктуризация БД убьет их, так что лучше сразу делать скрипты) - правильные индексы могут ускорить работу запросов на 2-3 порядка.

Путевый лист 26.03.2013 13:12

охо - никакой паники у меня нет, база работает много лет. я самолично модифицирую ее аж с 2003 года.
База и сейчас работает и "тормозит - вовсе не значит что на ней нельзя работать" Все в штатном режиме. В рабочие дни порядка 1200 документов создается.
Но просто я сейчас Розницу 2.0 в новом магазине внедрил и опять вренулся к этой теме. Что-то я сам вижу и устраню, что-то спрошу.
[b]Таймер для цикла мне нужен потому что я хочу на все программные Новый(), Записать(), УстановитьНовыйНомер() поставить запись в единый лог и если вдруг лог будет занять - чтобы можно было через цикл опять попытаться в него записать время, ИД и прочие вещи для анализа[/b]

Путевый лист 26.03.2013 13:14

Например
ЗаписьВЛог("Реализация",ТекущееВремя(),"УстНом","Начало")
Док.УстановитьНовыйНомер()
ЗаписьВЛог("Реализация",ТекущееВремя(),"УстНом","Конец")

Путевый лист 26.03.2013 13:37

Helen1986 (63) Да у меня все равно формекс используется, так что воспользуюсь его таймером
Еще принтеры по умолчанию порой не ищутся. Может надо бы через rdp их цеплять, а у меня как сетевые все!!!
Что-то посоветуете??? Не смертельно, но малость раздражает, а главное непонятно как правильно сделать - нигда вразумляющей информации все-таки не нашел, кроме ScrueDrivers

Helen1986 26.03.2013 13:44

записать в лог - а чем не устраивает стадартный системный журнал? система сама разрулит запись в него

(66) прежде чем домысливать - спрашивать надА. Мыслитель..... жевал бы ты лучше печеньку .... лучше с ядом


(67) замер производительности в отладчике даст требуемое соотношение времен без всякого SQL. Для первого приближения и анализа вполне хватит


"или не использовались (вывод в справочнике товаров текущих остатков)"

в какой то конфе видела вывод остатков весьма специфический.
при отключении иерархии - остатков нет
при включении - только по текущей группе

Путевый лист 26.03.2013 13:50

(71) HELEN1986 Системный журнал - это хорошо, но не получится ли так что я вообще систему в ступор поставлю - ибо в системный журнал столько всего записываться начнет.
[b]И все-таки, чтос принтерми мне посоветуете???[/b]

oxo 26.03.2013 13:50

«запись в единый лог» [68] — ЗаписьЖурналаРегистрации();

Путевый лист 26.03.2013 13:56

(73) охо. да нет - я хотел в свой писать, причем наверное в ДБФ-ку

oxo 26.03.2013 14:01

Доступ терминальный/мульти/нет?? [65]

Helen1986 26.03.2013 14:01

убери все инсталированные драйвера на отсутствующие в системе принтеры

oxo 26.03.2013 14:02

делать тебе больше нечего… «в свой писать, причем наверное в ДБФ-ку»

Путевый лист 26.03.2013 14:03

75 охо доступ терминальный. кстати а вы справились со своими проблемами??? у вас же своя ветка была на эти темы

oxo 26.03.2013 14:13

[code]
Процедура ОбработкаПроведения()
ТекущийДокумент=ТекущийДокумент();
ЗаписьЖурналаРегистрации(1,,,ТекущийДокумент,4);

//
//
//

ЗаписьЖурналаРегистрации(2,,,ТекущийДокумент,4);
КонецПроцедуры
[/code]

oxo 26.03.2013 14:15

(78) справились…


Текущее время: 00:44. Часовой пояс GMT +3.