Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Увеличение количество пользователей (число прочтений - 15210 )
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #15 - 26. Мая 2006 :: 11:57
Печать  
Krimskiy_xan писал(а) 26. Мая 2006 :: 11:02:
А во-вторых, как будет ворочиться 1Ска если у неё будет оперативно обновляться таблица примерно 30тыс на 40 (артикулы х склады).

От железа зависит. Главное - за 4 гига не вылезти Улыбка

А таблички более миллиона строк (пара ссылочных столбцов плюс число) у меня еще на типовом для 2002г железе без особых проблем крутились
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #16 - 26. Мая 2006 :: 12:03
Печать  
Quan писал(а) 26. Мая 2006 :: 11:57:
А таблички более миллиона строк (пара ссылочных столбцов плюс число) у меня еще на типовом для 2002г железе без особых проблем крутились

ЗЫЖ А сейчас я "с ногами" в SQL влез - из формата хранения (штатного) вываливаю все, что надо, в формат, удобный для обработки прямо на сервере (эдакий OLAPовидный подход). И там же, на сервере, все, что надо, делаю средствами SQL
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #17 - 26. Мая 2006 :: 12:47
Печать  
Quan писал(а) 26. Мая 2006 :: 07:02:
Итак, предложения (независимые, кстати, от 1Сплюсплюсности)

1. Без описанных выше революционных преобразований - тоже есть вариант, но корявый:
А нафига считать итоги в модуле проведения?
ДО начала проведения считаем итоги. Передаем их в модуль проведения в качестве параметра. При отсутствии параметра модуль проведения работать отказывается.
В скорости не выиграешь, но от блокировок уходишь.
Только системный флажок придумай: установил флаг, посчитал итоги, сбросил флаг. А если кто-то втыкается в уже поднятый флаг, то "сделай паузу, скушай sleep(1000)" - в цикле, пока флаг не освободится. Правда, придется тогда все доки, двигающие 41й счет, с этим флажком знакомить.


Не пойдет. Что будет если А снял итоги и Б снял итоги в один момент времени. Потом начал проводить А, следом за ним проводит Б. Получается что уйдем в минуса. Надо вешать блокировки перед расчетом итогов, но вешать блокировки например на товар а не на всю таблицу

Пока Список.ПолучитьСтроку()=1 Цикл
ТекЭлемент=Список.Товар;
Состояние("Ожидание разблокировки: "+ТекЭлемент);

УникальныйРесурс=""+глИдБазы+"_"+ТекЭлемент.Код+"_"+Склад.IDD;
           
ТекстЗапроса="DECLARE @result int
|EXEC @result = sp_getapplock @Resource = '"+УникальныйРесурс+"', @LockMode = 'Exclusive', @LockOwner = 'Transaction', @LockTimeout = 500000";
ODBCRecordset.Выполнить(ТекстЗапроса);                           
КонецЦикла;


Список - Список с товарами глИдБазы соотвесвтенно ИД нашей базы на сервере. Реквизит IDD - у меня уникальное число, но можно использовать ID например... Тогда допустимо использовать расчет до проведения и это действительно снизит время траназкии на проведение.

  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Увеличение количество пользователей
Ответ #18 - 26. Мая 2006 :: 13:14
Печать  
Еще не забыть вариант "поставил флаг и упал". Часто в играх типа CTF встречается.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #19 - 26. Мая 2006 :: 13:17
Печать  
kms писал(а) 26. Мая 2006 :: 13:14:
Еще не забыть вариант "поставил флаг и упал". Часто в играх типа CTF встречается.


Lock owner - Транзакция. Если транзакция отвалилась, значит и лок слетел если ты об этом.  Правда это был кода для случая когда итоги все же в модуле проведения снимаются, а станадартные блокировки 1С отключены
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #20 - 26. Мая 2006 :: 13:37
Печать  
yudin писал(а) 26. Мая 2006 :: 12:47:
Не пойдет. Что будет если А снял итоги и Б снял итоги в один момент времени.


А так не получится. Б будет ждать освобождения флага, и только после этого приступит к расчету итогов. Флаг освободится только когда A его сбросит после проведения.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #21 - 26. Мая 2006 :: 13:54
Печать  
Тогда где отличие от стандартной реализации 1С? В случае если работают 2 опера они так и будут друг друга ждать. У меня их в некоторых точках до 15...
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #22 - 26. Мая 2006 :: 14:33
Печать  
kms писал(а) 26. Мая 2006 :: 13:14:
Еще не забыть вариант "поставил флаг и упал". Часто в играх типа CTF встречается.

Я успешно юзаю штатную Блокировка()
У меня есть системный справочник, а в нем элементы для разных критических участков. Их-то я и блокирую; больше они ни для чего не используются Улыбка
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #23 - 26. Мая 2006 :: 14:35
Печать  
yudin писал(а) 26. Мая 2006 :: 13:54:
Тогда где отличие от стандартной реализации 1С? В случае если работают 2 опера они так и будут друг друга ждать. У меня их в некоторых точках до 15...

Отличие только одно: ждут-то они не в модуле проведения.
А так, вообще-то я сразу говорил, что метод корявый. Но некоторые проблемы решает
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Увеличение количество пользователей
Ответ #24 - 26. Мая 2006 :: 15:04
Печать  
А вот такой метод не пробовал:

Цитата:
sp_getapplock блокирует произвольную строку. Найди измерения, по которым параллельное проведение тебя не устраивает, и блокируй их. В моём случае это контрагенты и места хранения (сколько их есть в документе).
Например:
[1Cv7]ТекРесурс = рс.мд.ЗначениеВДлиннуюСтрокуБД(ВыбКонтрагент);
ТекстЗапроса = "sp_getapplock '" + ТекРесурс + "', 'Exclusive', 'Transaction'";[/1Cv7]
Ресурсы блокируются при проведении, отмене проведения и пометке удаления документов до начала создания/удаления движений.

В начале работы системы, при необходимости, снимай хинты от 1С.

Есть два подводных камня:
1. _1ssystem - описан у Сердюка. Решение напрашивается само собой - триггер;
2. _1suidctl. Или не снимай хинты (не будет параллельной записи новых объектов), или правь _1sp__1SUIDCTL_GetMaxID.

P.S. Это как раз тот случай, когда нужно понимать, что ты делаешь. Так что кода не будет.

P.P.S. Всё это касается только компоненты "оперативный учёт". С остальными компонентами я не разбирался.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #25 - 26. Мая 2006 :: 16:48
Печать  
Quan писал(а) 26. Мая 2006 :: 07:51:
[quote author=smile link=1148460172/0#12 date=1148628492]Одна беда: через несколько лет должно закончится адресное пространство некоторых объектов 1С (36^6=2миллиарда). Но к тому времени я надеюсь что-нибудь придумать Улыбка

Сделай базу распределенной - и только одна центральная.
Тогда если для кода базы пользоваться только латинские буквы и цифры получим
36^9 ( если еще русские буквы и спецзнаки то еще больше)
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #26 - 27. Мая 2006 :: 06:40
Печать  
Z1 писал(а) 26. Мая 2006 :: 16:48:
Сделай базу распределенной - и только одна центральная.
Тогда если для кода базы пользоваться только латинские буквы и цифры получим
36^9 ( если еще русские буквы и спецзнаки то еще больше)

Дык, если база одна, то последние 3 символа всегда равны коду базы; адресное пространство в итоге не расширяется.
Да и все равно, насколько я понимаю, первые 6 символов кода будут так и продолжать нумероваться от последних значений _1SUIDCTL
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #27 - 29. Мая 2006 :: 10:27
Печать  
Когда приблизишься к своей границе руками через IE меняешь код базы и все.
Например AA1 меняешь на AA2. ( при этом никто не должен работать с базой.) в
двух таблицах _1ssystem и _1sdbset
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Увеличение количество пользователей
Ответ #28 - 31. Мая 2006 :: 11:53
Печать  
Z1 писал(а) 29. Мая 2006 :: 10:27:
Когда приблизишься к своей границе руками через IE меняешь код базы и все.
Например AA1 меняешь на AA2. ( при этом никто не должен работать с базой.) в
двух таблицах _1ssystem и _1sdbset

А значения в _1SUIDCTL сами сбросятся или "ручками"?
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать