Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
Добрый день, господа.

Собственно, есть Access, есть MS SQL Server 2008. Пользователь из Access загружает данные на MS SQL Server, который их каким-либо образом обрабатывает и возвращает результат пользователю. Вроде бы все хорошо, но возникает проблема параллельной работы, когда несколько пользователей с разных машин загружают свои данные для обработки. Можно решить это с помощью временных таблиц - каждый пользователь грузит данные, они записываются во временные таблицы, обрабатываются каждый в своей сессии, и возвращают результат каждый своему юзеру. Но использование этих самых временных таблиц достаточно тяжеловесное решение, сильно замедляющее работу сервера.
Собственно, вопрос: можно ли сделать так, чтобы на сервере существовала одна база с заготовленными таблицами (форма данных всегда одна и та же), но для каждого подключившегося для обработки пользователя запускалось что-то вроде сессии, в пределах который он бы работал (имею ввиду, что явно использовать временные таблицы не хотелось бы, плюс если они локальные, то их и поюзать нормально не удастся)?
15 июл 13, 18:36    [14569755]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Ghall
Guest
создай вьюху с фильтром по @@spid и пусть юзеры работают с ней
15 июл 13, 18:51    [14569815]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
А можно немного поподробнее о данном способе реализации?
15 июл 13, 18:59    [14569845]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Но использование этих самых временных таблиц достаточно тяжеловесное решение, сильно замедляющее работу сервера.


И Вы проанализировали, что проблема именно в использовании временных таблиц?
15 июл 13, 19:14    [14569888]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
Дело не в анализе, сама Microsoft говорит о том, что временные таблицы медленно работают. Тем более, в мое случае речь идет не об одной сотне тысяч строк.
15 июл 13, 19:19    [14569903]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SiNtez_26
Дело не в анализе, сама Microsoft говорит о том, что временные таблицы медленно работают. Тем более, в мое случае речь идет не об одной сотне тысяч строк.
Где же это сама Microsoft говорит, что "временные таблицы медленно работают"? O_o
15 июл 13, 19:24    [14569916]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
Авторитетные источники гласят, что:
Большинство литературных источников, которые рекомендуют воздерживаться от использования временных таблиц, справедливо утверждают, что это может вызывать проблемы производительности из-за блокировки tempdb во время создания временной таблицы, увеличения числа операций ввода/вывода при использовании временной таблицы и потенциальной возможности блокировки tempdb, если создание и последующие операции с временной таблицей происходят в рамках одной транзакции. И это не говоря уже о многочисленных проблемах, которые sql server испытывает при операциях с временными таблицами
15 июл 13, 19:31    [14569940]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SiNtez_26,

Не менее авторитетные источники, говорят, что "проблемы", описанные другими авторитетными источниками легко разрешаются увеличением кол-ва файлов tempdb. И то об этом стОит заморачиваться, когда у вас пара другая сотен сессий будут одновременно создавать временные объекты. У Вас настолько высоконагруженная система?
15 июл 13, 19:34    [14569948]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
В том то и проблема, что да.
15 июл 13, 19:36    [14569957]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SiNtez_26
В том то и проблема, что да.


Проблему, собственно, Вы и не описали.
15 июл 13, 19:41    [14569971]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
SiNtez_26,
а можно полюбопытствовать, каким образом сейчас "Пользователь из Access загружает данные на MS SQL Server" ?
15 июл 13, 19:42    [14569972]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
Грузит в Access данные из кучи Excel файлов, затем макрос дергает процедуру с сервера, которая подключается к Access и загружает данные уже в таблицы MS SQL Server'a, который их обрабатывает и выгружает обратно.
15 июл 13, 19:51    [14569997]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SiNtez_26
Авторитетные источники гласят, что:
Большинство литературных источников, которые рекомендуют воздерживаться от использования временных таблиц, справедливо утверждают, что это может вызывать проблемы производительности из-за блокировки tempdb во время создания временной таблицы, увеличения числа операций ввода/вывода при использовании временной таблицы и потенциальной возможности блокировки tempdb, если создание и последующие операции с временной таблицей происходят в рамках одной транзакции. И это не говоря уже о многочисленных проблемах, которые sql server испытывает при операциях с временными таблицами
С тех пор, как это было написано, вышло уже ТРИ (!) мажорных версии MSSQL. Вы бы еще старее рекомендации поискали, для 6.5, например.
15 июл 13, 20:13    [14570059]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
И да, это _не_ Microsoft.
15 июл 13, 20:18    [14570073]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
SiNtez_26
Грузит в Access данные из кучи Excel файлов, затем макрос дергает процедуру с сервера, которая подключается к Access и загружает данные уже в таблицы MS SQL Server'a, который их обрабатывает и выгружает обратно.
Там рекомендации для случаев когда данные УЖЕ хранятся в таблицах на сервере, и нужно их только вытаскивать для отчетов, а вам же все равно их нужно сначала загружать, а глобальной разницы нет, временные таблицы или постоянные. Да и опять же, у вас наверняка не миллионы и не гигабайты данных, так что эти советы 11-ти летней давности просто ни о чем.
15 июл 13, 22:05    [14570362]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
SiNtez_26
Дело не в анализе, сама Microsoft говорит о том, что временные таблицы медленно работают. Тем более, в мое случае речь идет не об одной сотне тысяч строк.


Временные таблицы ровно такие же таблицы, как и постоянные. Медленно — это когда временная таблица создается для выполнения запроса, по сравнению с тем, как если бы она не создавалась.

А тут заменяя постоянную таблицу на временную ты ничего не выиграешь.
И туда, и сюда надо вставлять данные.С точностью до настроек кэша всё одно и то же.
15 июл 13, 23:20    [14570516]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
Mind
SiNtez_26
Грузит в Access данные из кучи Excel файлов, затем макрос дергает процедуру с сервера, которая подключается к Access и загружает данные уже в таблицы MS SQL Server'a, который их обрабатывает и выгружает обратно.
Там рекомендации для случаев когда данные УЖЕ хранятся в таблицах на сервере, и нужно их только вытаскивать для отчетов, а вам же все равно их нужно сначала загружать, а глобальной разницы нет, временные таблицы или постоянные. Да и опять же, у вас наверняка не миллионы и не гигабайты данных, так что эти советы 11-ти летней давности просто ни о чем.


Так не, советы-то в общем правильные, только не для его случая.
15 июл 13, 23:23    [14570524]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
В общем финальный мой совет — ничего не менять, а выяснить, почему возникают проблемы, в чем конкретно они заключаются. После этого уже действовать.

Таблицы как временные, но постоянные, называются псевдовременные, заключаются в том, что в pk добавляется ещё одно поле — @@spid, и во все запросы — фильтр по нему.
Вроде бы по них уже сказали.
15 июл 13, 23:30    [14570539]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
SiNtez_26
Member

Откуда:
Сообщений: 199
Всем спасибо за советы, решили все-таки использовать временные таблицы и не изобретать велосипеды.
16 июл 13, 10:05    [14571291]     Ответить | Цитировать Сообщить модератору
 Re: Параллельная работа пользователей с разными экземплярами одной БД  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
MasterZiv
Mind
пропущено...
Там рекомендации для случаев когда данные УЖЕ хранятся в таблицах на сервере, и нужно их только вытаскивать для отчетов, а вам же все равно их нужно сначала загружать, а глобальной разницы нет, временные таблицы или постоянные. Да и опять же, у вас наверняка не миллионы и не гигабайты данных, так что эти советы 11-ти летней давности просто ни о чем.


Так не, советы-то в общем правильные, только не для его случая.
Особенно список багов связанных со временными таблицами для SQL 7.0
16 июл 13, 21:19    [14575303]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить