URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 87939
[ Назад ]

Исходное сообщение
"PostgreSQL многоядерность"

Отправлено Renat , 22-Янв-10 15:35 
Предустановлена OC FreeBSD 7.1 amd64 на ней крутиться postgresql 8.4.2, сервер xeon 2-х процессорный по 4 ядра каждый.
Есть запрос по обновлению данных, приего выполнении загружаеться всего лишь одно ядро на 100% это хорошо видно из top, Запрос выполняесть где то 45-50 минут по нескольку раз в день. Можно ли как нибудь распаралелить так что бы все ядра учавствовали в этом процессе?

Содержание

Сообщения в этом обсуждении
"PostgreSQL многоядерность"
Отправлено none , 22-Янв-10 16:15 
запустить 8 запросов для разных порций не пересекающихся данных, но не факт что сильно быстрее будет - в диск упрестя, сейчас не на iowait основной проц уходит ?

"PostgreSQL многоядерность"
Отправлено Pahanivo , 22-Янв-10 16:17 
>запустить 8 запросов для разных порций не пересекающихся данных, но не факт
>что сильно быстрее будет - в диск упрестя, сейчас не на
>iowait основной проц уходит ?

конечно! это в 8 раз эфективнее загрузить головку диска позиционированием ))


"PostgreSQL многоядерность"
Отправлено Pahanivo , 22-Янв-10 16:16 
>Предустановлена OC FreeBSD 7.1 amd64 на ней крутиться postgresql 8.4.2, сервер xeon
>2-х процессорный по 4 ядра каждый.
>Есть запрос по обновлению данных, приего выполнении загружаеться всего лишь одно ядро
>на 100% это хорошо видно из top, Запрос выполняесть где то
>45-50 минут по нескольку раз в день. Можно ли как нибудь
>распаралелить так что бы все ядра учавствовали в этом процессе?

есть алгоритм:
$var =  A + B + C;
как его можно распаралелить?


"PostgreSQL многоядерность"
Отправлено none , 22-Янв-10 17:09 
>есть алгоритм:
>$var =  A + B + C;
>как его можно распаралелить?

очень легко, если переменные векторы или матрицы, к тому же как минимум значание самих перемнных A B C можно вычислять одновремеено


"PostgreSQL многоядерность"
Отправлено Pahanivo , 22-Янв-10 18:08 
>>есть алгоритм:
>>$var =  A + B + C;
>>как его можно распаралелить?
>
>очень легко, если переменные векторы или матрицы, к тому же как минимум
>значание самих перемнных A B C можно вычислять одновремеено

действительно, имея буйную фантазия можно и из примитивной суммы постротить линейную алгебру ... ))
то что из системы с кучей вычислений вероятно можно выбрать некоторый вынезависимые вычисления это и ежу понятно.
имелось ввиду примитивное выражение:
1 + 2 +3 = ?
слабо распаралелить?


"PostgreSQL многоядерность"
Отправлено none , 22-Янв-10 18:50 
>линейную алгебру ... ))
> ...
> имелось ввиду примитивное выражение:

а какое отношение имеют примитивные выражения к сложным SQL запросам ? про реляционную алгебру слыхали ? аналогии с линейной понятны ?
>1 + 2 +3 = ?
>слабо распаралелить?

это конструктивный вопрос ?, кстати 1 + 2 + 3 + 4 - параллелится SSE



"PostgreSQL многоядерность"
Отправлено none , 22-Янв-10 19:10 
>1 + 2 +3 = ?
>слабо распаралелить?

ах да можно сделать одной коммандой - SSE5 PHADDBD


"PostgreSQL многоядерность"
Отправлено svn , 22-Янв-10 16:20 
>Можно ли как нибудь
>распаралелить так что бы все ядра учавствовали в этом процессе?

Скорее всего нет.
Но нужно ли это делать?



"PostgreSQL многоядерность"
Отправлено Renat , 22-Янв-10 16:26 
>Скорее всего нет.
>Но нужно ли это делать?

Дело в то что всего пару месяцев назад этот запрс выполнялся минут за 5-7, а щас база подросла и стремительно продолжает это делать. Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут а так эдак часика 2.



"PostgreSQL многоядерность"
Отправлено Pahanivo , 22-Янв-10 16:47 
>>Скорее всего нет.
>>Но нужно ли это делать?
>
>Дело в то что всего пару месяцев назад этот запрс выполнялся минут
>за 5-7, а щас база подросла и стремительно продолжает это делать.

давай ты начнешь с детального описания задачи


>Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут
>а так эдак часика 2.

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


"PostgreSQL многоядерность"
Отправлено Renat , 01-Фев-10 11:01 
>[оверквотинг удален]
>давай ты начнешь с детального описания задачи
>
>
>>Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут
>>а так эдак часика 2.
>
>мдя, а что вы, уважаемый хотели?
>при кривом подходе можно и в сутрки уложится, хотя нет, чтобы за
>сутки ...
>тут второй сервер нужен ...

по сути в запроси не чего сложного нет, происходит что то вроде репликации c помощью dblink тоесть данные переносяться из однай базы в другую но не все, а по фильтру тоесть только то что нужно, причем в разные бызы из одной и для каждой быза свои правила, но лазеть приходиться по всей базе так как некоторые старые данные могут обновляться и делают это тоже довольно часто.
По поводу кривости или нет я не справшивал, я спросил можноли можно ли или нет заставить postgresql выполнять эту задачу паралельно?


"PostgreSQL многоядерность"
Отправлено none , 22-Янв-10 17:15 
>Дело в то что всего пару месяцев назад этот запрс выполнялся минут
>за 5-7, а щас база подросла и стремительно продолжает это делать.
>Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут
>а так эдак часика 2.

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