Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Многопоточность / 13 сообщений из 13, страница 1 из 1
28.05.2007, 17:57
    #34556054
GreyCardinal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
можно ли в постгрессе написать многопоточный запрос?
задача такая
есть объекты учета
есть записи в регистрах
в принципе каждому объекту своя партия записей - и медъобъектные записи не зависимы (относительно)

как пример хочется создать процедурку на встроенном языке, которая создает заданное количество записей в регистрах для каждого объекта
и соотв кажется очевидно что это отдельные потоки
реально реализовать?
...
Рейтинг: 0 / 0
28.05.2007, 18:24
    #34556134
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
GreyCardinalможно ли в постгрессе написать многопоточный запрос?
задача такая
есть объекты учета
есть записи в регистрах
в принципе каждому объекту своя партия записей - и медъобъектные записи не зависимы (относительно)

как пример хочется создать процедурку на встроенном языке, которая создает заданное количество записей в регистрах для каждого объекта
и соотв кажется очевидно что это отдельные потоки
реально реализовать?
Нет. Постгрес не поддерживает такую фичу. Можно порыться в контрибах на свой страх и риск.
...
Рейтинг: 0 / 0
30.05.2007, 10:53
    #34560252
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
GreyCardinal...которая создает заданное количество записей в регистрах для каждого объекта ...

потоки нет, как ут уже прозвучало..Но в постгрессе есь циклы, в которых каждый проход ядро вызывает последовательно само. В принцепе Вы можете делать кучу работы на каждом вызове из ядра, пока не скажите - усё... При этом клиент есесвенно будет ожидать... Насколько это хорошо или плохо - хз...


с уважением
(круглый)
...
Рейтинг: 0 / 0
30.05.2007, 13:39
    #34561076
GreyCardinal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
Поподробнее можно?

пример
есть тригер, котрый срабатывает на сохранение шапки документа -конкретно установка флага "провести"
и он в цикле начинает проводить каждую строку документа
в каждая строке - происходит вызов процедуры проведения строки
и хочется чтобы он повызывал для каждой, дождался пока все они параллельно отработают, и в конце сделал окончательную обработочку (если все ок -то статус документа сменил и тп)
...
Рейтинг: 0 / 0
30.05.2007, 13:48
    #34561110
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
Вас беспокоит производительность ? Или в чем смысл такого усложнения ?
...
Рейтинг: 0 / 0
30.05.2007, 16:34
    #34561930
GreyCardinal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
Да
ну и эффективное использование сервера
просто задача из нашей жизни -накладная с 400 позиций основных средств
по каждому надо сделать как минимум 4 проводки, и данные до этого расчитать
по каждой позиции независимо от других

или другая - сальдо по контаргентам
с суммами просрочек, пенями и тп
тоже по каждому считается независимо, а запускает один человек (отчет)

просто когда данных мало - это не критично
а когда много и видишь что многопроцессорный(многоядерный) сервер загружен явно на 1 проц... (например у меня на двухядерном загрузка 45-47% ;)
...
Рейтинг: 0 / 0
30.05.2007, 17:52
    #34562281
SilverSpyder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
В принципе... можно но програмными средствами.
По видимости надо открывать два конекта складывать данные в разные темповые таблицы а потом сливать...

НО я думаю это достаточно сложновато я думаю заметно укорит использование Prepare и Execute.
...
Рейтинг: 0 / 0
30.05.2007, 18:49
    #34562478
domanix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
Через задницу возможно все - бесспорно.
Но не забудем,что все заявленные действия - которые неплохо бы проводить паралельно-должны выполнятся в одной транзакции. Если паралельность разводить со стороны клиента то управление транзакциями становится черезвычайно сложным или даже невозможным.
Короче не стоит овчинка выделки.(IMHO)
Я так считаю, что в данном случае нужно совершенствовать механизм проводки.Улачшая сам алгоритм.
Других путей не вижу..
...
Рейтинг: 0 / 0
31.05.2007, 07:03
    #34563051
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
Я не вижу ничего страшного, в том, что документ на 400 строк будет проводиться несколько минут. Сколько времени этот документ вводили ? Пара минут на проведение ничего не изменит :)
Если пользователю совсем не хочется ждать, можно эту операцию запускать параллельно на клиенте, сохраняя при этом пользователю возможность работать с другими документами.
...
Рейтинг: 0 / 0
31.05.2007, 09:20
    #34563227
GreyCardinal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
"страшное" в долгом проведении - это что в это время работают и другие - и следовательно вероятность конфликтов возрастает, по сравнению с проведением за пару секунд....

...НО я думаю это достаточно сложновато я думаю заметно укорит использование Prepare и Execute....

Как я написал что обработка -в тригере
в нем самое "тормозящее" это цикл

for trow in select * from cis.cis_gl
where cis.cis_gl.cis_object = new.cis_object and cis.cis_gl.post_date > new.post_date
order by cis.cis_gl.post_date
loop
update cis.cis_gl set comment='updated', skt_s= new.kt_s + trow.skt_s, sdt_s= new.dt_s + trow.sdt_s where cis_gl.gl_id = trow.gl_id;
end loop;

раз он в тригере -не означает что он уже прекомпилирован?
...
Рейтинг: 0 / 0
31.05.2007, 10:05
    #34563364
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
ну так уберите его, перепишите одним SQL запросом, судя по коду это не трудно
...
Рейтинг: 0 / 0
31.05.2007, 10:23
    #34563425
GreyCardinal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
как?
в апдейте нельзя сделать чтобы он обновлялся по определенному порядку
в мне надо чтобы следующая по дате запись обновлялась значением предыдущей + изменение текущей записи
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.06.2008, 19:04
    #35391927
Robert Ayrapetyan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность
все-таки, если PQisthreadsafe() возвращает 1, можно ли использовать объект Pgconn из нескольких потоков одновременно? Где про это можно почитать? Тут все очень размыто - http://www.postgresql.org/docs/8.3/interactive/libpq-threading.html . С одной стороны,

авторlibpq is reentrant and thread-safe if the configure command-line option --enable-thread-safety was used when the PostgreSQL distribution was built

С другой -

авторOne thread restriction is that no two threads attempt to manipulate the same PGconn object at the same time.

Исключают ли они друг друга, или второе всегда верно, непонятно. Дайте ссылку или растолкуйте.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Многопоточность / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]