superbluesman
Дата: 05.12.2002 17:36:54
На сервере есть некая сводная спциально денормализованная сводная таблица для всевозможных анализов. Каждый клиент передавая на сервер в ХП некие параметры, выбирает из этой таблицы подмножество записей и с этим подмножеством уже колбасит SELECT то-то, GROUP BY и ORDER BY.
Так вот, можно это подмножество сбрасывать во временную таблицу #tmp и с ней изголяться, а можно завести специальную постоянную таблицу (для неё построить необходимые индексы), где ещё + столбец id-процесса, чтобы разграничить подмножество выбранных записей конкретного пользователя. Есс-но сначала DELETE FROM эта таблица с указанным номером SPID, а потом INSERT выбранных записей из денормализованной таблицы. Какой функцией наполнять значение - ID -процесса (у меня с каждого раб.места работа с сервером идёт через один коннект) ????
И не что лучше - использовать локальную временную таблицу или специальную постоянную ???
dkstranger
Дата: 05.12.2002 18:22:55
Довольно обширная тема.
У временных таблиц и ц постоянных есть свуои плюсы и минусы.
Лет 5 мы использовали временные таблицы
/id процесса в таком случае просто не нужен -
каждый и так видит только свое/.
Но сейчас по многим причинам (последнифй год-два) работаем и со
статическими.
Навзлет тут следующие за/против
1. В случае с временными таблицами нет нужды смотреть
id процесса, все видится и так в коннекте, весь мусор
убивается при завершении коннекта. В противном случае
нужно специально это анализировать
2. Для некоторых приложений наличие единственного
коннекта не гарантируетс, плюс возникают тонкие моменты при
работе с процедурами, удаленными серверами, динамическими запросами и пр.
3. В случае со статическими таблицами мы при входе в систему
запускаем процедуру создания сеанса. При этом пишется
в нормализвоанные таблицы много всякой административной информации
4. При статических таблицах все общения с сервером требуют
передачи параметра - id сеанса
5. Статические таблицы позволяют проводить трассировку
и отладку с другого коннекта, при временных - приходится
встраивать отладчик в клиента
И исчо многое, многое, многое....
MiCe
Дата: 05.12.2002 18:49:34
я использую для этой цели uniqueidentifier...
так же ведется отдельная табличка куда заносятся выделенные ID, имя юзера,дата создания и т.д.
да за выделение id и поддержкой таблицы отвечает несколько sp...
superbluesman
Дата: 06.12.2002 09:51:54
Какой функцией можно получить уникальный идентификатор соединения/сеанса ???
alexeyvg
Дата: 06.12.2002 10:05:52
@@spid
LSV
Дата: 07.12.2002 14:31:33
Мы используем общую таблицу с полем HOST char(15)
куда инсертим HOST_NAME()
В сети имя хоста уникально.
А в select пишем: where host=host_name()
т.е. параметров никуда передавать не нужно.
Скорость работы ? Хотелось-бы лучше, но и так нормалёк.
dkstranger
Дата: 09.12.2002 10:38:26
2LSV
А если с одного хоста запускается несколько проектов?
Скажем, ввод счетов, платежей и разноска?
При вашем подходе они могут весьма мешать друг другу ...
Бронников Андрей
Дата: 12.12.2002 22:24:40
А как решаете проблему с чисткой таблиц. В принципе это все можно делать при выходе закрытии приложения. Однако, бывают и исключительные ситуации, компьютер пользователя завис, электричество отключили да мало ли что может произойти.
В случае с временными таблицами сервер сам уничтожает данные, в другом случае все чистить нужно самому.
Как вообще можно понять, что пользователь отсоединился?
Белов Владимир
Дата: 12.12.2002 23:36:34
ИМХО, лучше использовать временные таблицы, чем свою постоянную.
Мне кажется, проблемы с блокировками и т.д. точно будут обеспечены. Когда 5 пользователей - это будет не заметно, а когда 30 пользователей - это уже серьезная проблема.