Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alex999kon
Member

Откуда: Россия Иваново
Сообщений: 4250
Обращаюсь в надежде получить подсказку - каким образом и возможно ли запустить на SQL Server 2008 R2 Rus от одного клиента сразу же нескольких расчетов.

Ситуация вкратце такова: есть несколько клиентских приложений Access, с выполнением всех расчетных действий на стороне SQL сервера, расчеты многостадийные, последовательные, причем действия любого из них ни как не зависят от результатов любых других.
Замечено что на сервере (SQL Server 2008 R2 rus, SQl 2008 r, 16 ядер, 32 ГБ памяти, мощный аппарат, аппаратный сервер) в единицу времени исполняется только один расчет, поскольку команды на СКЛ сервер передаются последовательно, а расчетов много, хотелось бы узнать возможно ли запустить несколько расчетов на стороне СКЛ сервера одновременно, думается так потому что при одновременном запуске расчетов от разных клиентов на СКЛ сервера загрузка идет по практически всем ядрам ЦП, а вот при работе от одного клиента только на одном ядре.

Вот и подумалось - почему бы не запустить от ОДНОГО клиента сразу несколько этих расчетов, то есть повысить скорость выполнения расчетов, а вот как это сделать и возможно ли так не знаю поэтому и прошу помощи.

Заранее спасибо всем Участникам. с Уважением Alex999kon....
4 окт 12, 09:13    [13265398]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
alex999kon
Обращаюсь в надежде получить подсказку - каким образом и возможно ли запустить на SQL Server 2008 R2 Rus от одного клиента сразу же нескольких расчетов.

Открыть несколько коннектов
4 окт 12, 09:15    [13265404]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alex999kon
Member

Откуда: Россия Иваново
Сообщений: 4250
Glory,

получается что от одного клиента я должен обратиться к серверу от разных User`ов или внутри алгоритма как то надо указать что конкретный расчет выполнить от имени или через соединение (номер, ид или что-то еще)?

Спасибо еще раз
4 окт 12, 09:22    [13265437]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
alex999kon
получается что от одного клиента я должен обратиться к серверу от разных User`

Почему вы так решили ?
4 окт 12, 09:23    [13265441]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Твой клиент умеет вызывать асинхроронное выполнение процедур на сервере. Вот кусочек кода котрый делает это у меня:

        dtStart = Now
        Dim rs As ADODB.Recordset
        Set rs = cnn.Execute(sSQL, , ADODB.adAsyncExecute)
        Dim i As Integer: i = 0
        While rs.State = ADODB.adStateExecuting Or rs.State = adStateFetching
            DoEvents
            If DateDiff("n", dtStart, Now) > 10 Then
                GoTo break_loop
            End If
            i = i + 1
            If i = 100 Then
                lblTime.Caption = "Время " & Format(Now - dtStartStep, "ss")
                i = 0
            End If
        Wend
break_loop:
        dtEnd = Now


т.е. для запуска каждого расчета можно сделать свою форму, на ней кнопку Старт и обеспечить визуализацию процесса расчета и его окончания. Пока из каждой формы будет считаться свой расчет можно работать с остальными формам.

Можно организовать и по-другому - повесить проверку окончания расчета на таймер, тогда цикл с дуивентсами не нужен. Но это лучше обсуждать не в этом топике - это по про сервер, а у тебя проблема большей частью в запуске с клиента.
4 окт 12, 09:25    [13265449]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alex999kon
Member

Откуда: Россия Иваново
Сообщений: 4250
Glory,

признаюсь в некотором незнании всех процессов которые надлежит использовать, поэтому и обратился за помощью, а так мне подумалось исходя из знаний которыми обладаю,

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

с уважением Alex999kon
4 окт 12, 09:30    [13265473]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
alex999kon
признаюсь в некотором незнании всех процессов которые надлежит использовать, поэтому и обратился за помощью, а так мне подумалось исходя из знаний которыми обладаю,

Откройте хелп по Access и найдите раздел про то, как использовать ADO для создания коннектов.


alex999kon
вот и пришло решение об использовании (запуске) сразу же нескольких расчетов от одного клиента (использовать все ядра процессора, а не только выделенного под конкретного клиента или для запущенного процесса),

Мда. Количетсво коннектов никак нет влияет на то, сколько ядер MSSQL будет использовать для выполнения того или иного запроса.

alex999kon
а вот скорострельности не хватает, хотя аппарат достаточно мощный

И вы уже нашли узкое место своей системы ?
4 окт 12, 09:34    [13265497]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
alex999kon
получается что от одного клиента я должен обратиться к серверу от разных User`ов или внутри алгоритма как то надо указать что конкретный расчет выполнить от имени или через соединение (номер, ид или что-то еще)?
Нет, не нужно от разных User`ов. Для сервера это должно выглядеть как создание нескольких коненктов, в каждом из которых запускаются запросы.

А как это делается на вашем клиенте - спросите в соответствующем форуме. Тут много вариантов, например, использование асинхронных вызовов или отдельных потоков с синхронными вызовами в самом клиенте...
4 окт 12, 09:37    [13265518]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alex999kon
Member

Откуда: Россия Иваново
Сообщений: 4250
Программист-Любитель,

от всей души приветствую!

предложенный вариант логичен, тем более видимо работает, но я несколько о другом, представь себе что пользователь находится в форме, указал что ему надо посчитать и нажал кнопку "Рассчитать", и пока он не получит ответ ему ничего другое просто не интересно, а вот сам расчет это например выполнение большого количества (10-50 в зависимости от сложности Изделия, сам понимаешь моя старая тема) но исполнение идет последовательно от 1 до необходимого уровня, поэтому возлагать на пользователя последовательность выполнения вычисления (если я правильно понял, извини если не так) как то неправильно. Мне то хотелось чтоб много многоуровневый расчет выполнялся параллельно, не зависимо от окончания предыдущих .

Спасибо за участие.
4 окт 12, 09:44    [13265543]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
alex999kon
поэтому возлагать на пользователя последовательность выполнения вычисления (если я правильно понял, извини если не так) как то неправильно.

Вы неправильно поняли.
4 окт 12, 09:46    [13265554]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
alex999kon
Программист-Любитель,

от всей души приветствую!

предложенный вариант логичен, тем более видимо работает, но я несколько о другом, представь себе что пользователь находится в форме, указал что ему надо посчитать и нажал кнопку "Рассчитать", и пока он не получит ответ ему ничего другое просто не интересно, а вот сам расчет это например выполнение большого количества (10-50 в зависимости от сложности Изделия, сам понимаешь моя старая тема) но исполнение идет последовательно от 1 до необходимого уровня, поэтому возлагать на пользователя последовательность выполнения вычисления (если я правильно понял, извини если не так) как то неправильно. Мне то хотелось чтоб много многоуровневый расчет выполнялся параллельно, не зависимо от окончания предыдущих .

Спасибо за участие.

Во-первых, лучше это обсуждать в форуме по аксесу.
Во-вторых, запустить на расчет несколько процедур одновременно не проблема. Надо только в клиентском коде организовать контроль за окончанием каждой из них. Как только все закончатся - значит и весь расчет закончен.
В-третьих, наверняка можно переписать код самого расчета так, чтобы он выполнялся для всего изделия сразу. Учитывая твои невеликие серверные скиллы ты скорее всего используешь его (сервер) нерационально.
4 окт 12, 10:07    [13265668]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alex999kon
Member

Откуда: Россия Иваново
Сообщений: 4250
вот уже что-то и проясняется..

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

Наверное так точнее будет.

спасибо еще раз всем!
4 окт 12, 10:16    [13265730]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
alex999kon
Member

Откуда: Россия Иваново
Сообщений: 4250
Программист-Любитель,

пока писал ответ с приблизительно такими же выводами меня уже опередили, радует что мысли совпадают, значит уже на верном пути....

насчет использования сервера так оно и есть, осваиваю, пытаюсь, пробую...

потом от полученных шишек отойду и наверняка получится более правильно. Обучение...
4 окт 12, 10:18    [13265753]     Ответить | Цитировать Сообщить модератору
 Re: Запуск на СКЛ сервере нескольких расчетов от одного клиента одновременно!!!  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
alex999kon,

От паралельного выполнения кода, не подготовленного для этого, получите новые куда больше плохие проблемы чем низкая производительность, блокировки, дедлоки и пр.
ЗЫ
просто предупреждаю ...
4 окт 12, 17:17    [13269539]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить