|  13.02.2008, 17:21 | #1 | 
| Участник | 
			
			задача насколько абстрактная, настолько же реальная сеть из 100 магазинов, 100 пользователей через терминал подключаются к базе Navision (Nav4SP3 SQL2005). Основная деятельность - учет товародвижения (транзитные перемещения, реализация, инвентаризация) Скорость учета док-та из 1000 строк в монопольном режиме 1,5 минуты Перемещения (3-5 по 50 строк в день )учитываются равномерно в течении рабочего дня реализация (1 док-т 50 строк) всеми - с 9 до 11 каждый день Как бы проверить - а будет ли работоспособна вся эта кухня ? | 
|  | 
|  13.02.2008, 18:15 | #2 | 
| Участник | Цитата: А может все-таки попытаться "разнести" на разные сервера? И я не представляю себе какой именно сервер нужно будет соорудить, чтобы 100 Терминальных сессий нормально работали даже на 2003. Цитата: 
		
			Основная деятельность - учет товародвижения (транзитные перемещения, реализация, инвентаризация) Скорость учета док-та из 1000 строк в монопольном режиме 1,5 минуты Перемещения (3-5 по 50 строк в день )учитываются равномерно в течении рабочего дня реализация (1 док-т 50 строк) всеми - с 9 до 11 каждый день Как бы проверить - а будет ли работоспособна вся эта кухня ? И при этом "отключить" или переделать всякого рода аналитики и переименовки. А так же провести в соответствие последовательность заполнения полей. А потом еще провести, по модному щас скажу, тюнинг самого SQL. А если этого не сделать - будут ну просто постоянные блокировки. {аж страшно представить себе какие} | 
|  | 
|  13.02.2008, 18:33 | #3 | 
| Участник | Цитата: А вот одновременный учет стольких документов.... Хм.. интересно.. А за какой период они должны все это учесть? Т.е. насколько важно учесть реализацию в 10 утра, а не в час ночи Я бы предложил повесить весь учет на NAS, а менеджеры собственно проставляли бы тогда "галочки", какие документы учитывать. И блокировок не будет  Надо будет еще оперативно рассылать сообщения юзерам, что у них в документе ошибка. В итоге вопрос сведется к необходимости "неотложного" учета и далее скорости учета через NAS | 
|  | 
|  13.02.2008, 20:58 | #4 | 
| Участник | Цитата: всем все (справочники, учетные записи постановки на транзит, документы для учета) выгрузи, умножаем на 50 реальных и процесс уже с трудом умещается в рамки светового дня. А ожидается еще 50 .. Модный "Тюнинг Sql" уже юзается.. Как выход такая вот задумка с терминальной работой | 
|  | 
|  13.02.2008, 21:03 | #5 | 
| Участник | Цитата: 
		
			Сообщение от Fordewind
			   В этом то как раз не проблема... отдельный терминальный сервак с 12 - 16 Гиг оперативки и запуском Nav (без рабочего стола). А вот одновременный учет стольких документов.... Хм.. интересно.. А за какой период они должны все это учесть? Т.е. насколько важно учесть реализацию в 10 утра, а не в час ночи Я бы предложил повесить весь учет на NAS, а менеджеры собственно проставляли бы тогда "галочки", какие документы учитывать. И блокировок не будет  Надо будет еще оперативно рассылать сообщения юзерам, что у них в документе ошибка. В итоге вопрос сведется к необходимости "неотложного" учета и далее скорости учета через NAS А вто про отложенный пакетный учет оч-ч-ч-ень интересно, это не с той же оперы когда народ учет перелопатил все проверки перед учетом отдельно, а пакетный учет отдельно ? Не совсем правда понятно как быть, если 1 яблоко на остатке, а двоим жаждущим (учесть) проверка сначала скажет, что нормуль - можете забирать, а ночью одного пошлет - извините - нема уже. | 
|  | 
|  14.02.2008, 09:26 | #6 | 
| Участник | 
			
			Резервирование используйте.
		 
				__________________ Want to believe... | 
|  | 
|  14.02.2008, 10:00 | #7 | 
| Участник | 
			
			Итак однозначно проблемы будут с блокировками (без переделки) и не факт ,что юзвери в конец не озвереют от постоянных зависаний проверить эмпирически не представляется возможным,а опыт подобного у кого-либо нет... | 
|  | 
|  14.02.2008, 10:03 | #8 | 
| Участник | |
|  | 
|  14.02.2008, 10:14 | #9 | 
| Участник | Цитата: но этих блокировок будет на порядок меньше, если они вообще возникнут | 
|  | 
|  14.02.2008, 11:10 | #10 | 
| Участник | Цитата: По поводу MERGE-репликации (по описанию вроде как напоминает это "ВСЕ-ВСЕМ") - по моему мнению не очень правильно. Так как я не знаю всех тонкостей, то могу только предположить, что основные справочники например, товары, должны быть введены в основную БД, а потом реплицироваться. Далее транзиты можно реплицировать по определенному справочнку (небольшая доделка на триггерах). Можно попытаться продумать многоуровнеую звезду, если все завязано на регионах. Продажи можно собирать в ЦО и центральном офисе. P.S. Вы сможете гарантировать себе, что связь у Вас не пропадет ни при каких обстоятельствах? | 
|  | 
|  14.02.2008, 16:38 | #11 | 
| Участник | 
			
			Не думаю если за учет будет отвечать отдельный процесс (NAS) или учет будет происходит по вечерам.  Если все же возникнут проблемы с блокировками с ними гораздо проще бороться нежели с блокировками при учете. Вплоть до разделения диапазонов Entry No. в Reservation Entry для филиалов (если каждый филиал будет отгружать со своего склада). | 
|  | 
|  14.02.2008, 17:19 | #12 | 
| Участник | Цитата: Вот именно, - когда начнут все эти 100 пользователей колбасить заказы, то мы просто получил залоченную 337 таблицу! Цитата: 
		
			Если все же возникнут проблемы с блокировками с ними гораздо проще бороться нежели с блокировками при учете.
		
	 Можно еще много чего придумать под требования. Цитата: 
		
			Вплоть до разделения диапазонов Entry No. в Reservation Entry для филиалов (если каждый филиал будет отгружать со своего склада).
		
	 | 
|  | 
|  14.02.2008, 17:46 | #13 | 
| Участник | |
|  | 
|  14.02.2008, 18:03 | #14 | 
| Участник | Цитата: Но даже если и без - Locktable на резервировании будет мешать снятие резервов. Вывод - при одновременном учете и резервировании вероятность блокировать увеличивается. Цитата: 
		
			Сообщение от RedFox
			   Ну возможно вообще создать временную таблицу со строками, связанными с 37, 5740 и просто заносить туда строки с товарами,  которые еще можно продавать. И при этом производить сравнение наличия и резерва. А потом уже, отдельным процессом все скопом резервировать.. Можно еще много чего придумать под требования. Интересное решение  . Яблок конечно всем хватит.. но токо до момента учета  . Или есть способ юзеру залесть во временную таблицу другого юзера? В противном случае чем Ваше предложение отличается 32 таблицы (Positive=true - товар которые еще можно продавать) + 337 - резервы на эти товары? [quote=RedFox;364169] А зачем разделять там по диапазонам, если там все под Заказы и так разделяется? [quote=RedFox;364169] К сожалению (или счастью?) номера документа не включен в PK 337 таблицы. Напоминаю тему обсуждения - уменьшить вероятность блокировок. Поясняю свою мысль: 1. Принимаем решение - разделяем 337 на диапазоны по филиалам А - 0..1000000 Б - 10000000..20000000 2. Везде в резервировании заменяем код поиска последнего Entry No. с одновременной блокировкой таблицы (LockTable; Find('+); ) на примерно след. (setfilter("Entry No.", GetFilialFilter); :Locktable; Find('+')); Что получили А и Б одновременно резервируют A: setfilter(0..1000000); find('+'); последняя запись 300 (только ее и (или) на Сиквеле экстент залочит сервер) Б: setfilter(1000000..2000000); find('+'); последняя запись 10000500 (только ее и (или) на Сиквеле экстент залочит сервер) А и Б мешать друг другу не будут. Заметьте - другие пользователи из филиалов буду ждать освобождения своих диапазонов. Вывод: У каждого филиала 337 таблица будет залочена только в своем диапазоне (кроме случаев когда последние записи 2 филиалов будут в одном экстенте - такое будет только при небольшом числе записей в 337, обойти можно также вставив пустышки) и возможно одновременное резервирование Ремарка про склад - locktable все же хорошая функция, позволяет не зарезервировать 2 раза один и тот же товар. | 
|  | 
|  14.02.2008, 19:07 | #15 | 
| Участник | Цитата: Если хотите, то можете организовать "показательные работы". Заодно может и поделитесь Вашей статистикой. Цитата: 
		
			Сообщение от rmv
			
			 При учете резервы снимаются. Подозреваю что не без LockTable. Но даже если и без - Locktable на резервировании будет мешать снятие резервов. Вывод - при одновременном учете и резервировании вероятность блокировать увеличивается. Цитата: 
		
			Если правильно понял Вы предлагаете использовать temporary table...
		
	 Да и идея была за 5 минут ;-) Если нужен 100% работоспособный быстро-модифицируемый оптимизированный механизм - это другое совсем дело! Там не только 1 таблица, но еще несколько полей в другой   Кстати, при желании можно залезть в не системную таблицу средствами SQL и вставка 1 строки в незагруженную таблицу будет быстрее, чем дополнительное прочтение (кстати, опять с блокировками) из другой (будет JOIN) Цитата: 
		
			... У каждого филиала 337 таблица будет залочена только в своем диапазоне ...
		
	 Но советую еще кроме таких изменений зайти в SSProfiler+DTA и поотпимизировать. + Чтобы не вылазить за диапазон, изменять периодически номера в данной таблице (иначе можно не угадать с размерность диапазона). | 
|  | 
|  15.02.2008, 09:50 | #16 | 
| Участник | 
			
			С диапазоне уже работаем, каждый работает в своем и всё это сливается в общую базу. Кстати проверяли на одновременный учет - был достигнут немного нестандартным способом. Допустим  База общая + две базы Магазин1 и магазин 2. Убиваем в магазине учетные таблицы 32, 5802 и т.д. Делаем View этих таблиц, берущую нужный диапазон соответствующей таблицы из общей базы и вуаля- все работает. счастье возможно, но если сделать общим справочник Item надо отключать коррекцию себестоимости в карточке иначе лочка во базе где используется View надо либо убрать все sift-поля, либо на все делать view И счастье заканчивает как только общей становится 83 таблица, где записей мало и лочка цепляет "соседа" | 
|  | 
|  15.02.2008, 10:49 | #17 | 
| Участник | Цитата: 
		
			Сообщение от dmites
			   С диапазоне уже работаем, каждый работает в своем и всё это сливается в общую базу. Кстати проверяли на одновременный учет - был достигнут немного нестандартным способом. Допустим  База общая + две базы Магазин1 и магазин 2. Убиваем в магазине учетные таблицы 32, 5802 и т.д. Делаем View этих таблиц, берущую нужный диапазон соответствующей таблицы из общей базы и вуаля-  все работает. счастье возможно, но   Цитата: 
		
			если сделать общим справочник Item надо отключать коррекцию себестоимости в карточке иначе лочка
		
	 Цитата: 
		
			во базе где используется View надо либо убрать все sift-поля, либо на все делать view И счастье заканчивает как только общей становится 83 таблица, где записей мало и лочка цепляет "соседа" | 
|  | 
|  15.02.2008, 11:27 | #18 | 
| Участник | Цитата: 
		
			Сообщение от dmites
			   С диапазоне уже работаем, каждый работает в своем и всё это сливается в общую базу. Кстати проверяли на одновременный учет - был достигнут немного нестандартным способом. Допустим  База общая + две базы Магазин1 и магазин 2. Убиваем в магазине учетные таблицы 32, 5802 и т.д. Делаем View этих таблиц, берущую нужный диапазон соответствующей таблицы из общей базы и вуаля- все работает. счастье возможно, но если сделать общим справочник Item надо отключать коррекцию себестоимости в карточке иначе лочка во базе где используется View надо либо убрать все sift-поля, либо на все делать view И счастье заканчивает как только общей становится 83 таблица, где записей мало и лочка цепляет "соседа" Но пошел на мой взгляд более простым путем - изменил учетные кодеюниты, так чтобы номера операции брались из своих диапазонов. | 
|  | 
|  15.02.2008, 12:31 | #19 | 
| Участник | 
			
			так вот и думаем - с view-ми огород городить накладно, нестандартно и т.д. Если диапазоны сохранить да запустить всех в 1 базу, с учетными таблицами проблем нет -  записей за несколько лет позволяют физически разделяют экстенты пользователей. В каждом диапазоне работает 1 чел. Но справочники и журналы то одни,тут блокировок не избежать... | 
|  | 
|  15.02.2008, 13:02 | #20 | 
| Участник | Цитата:  ), но общий смысл понятен. Цитата: 
		
			Но справочники и журналы то одни,тут блокировок не избежать...
		
	   | 
|  |