Предустановлена OC FreeBSD 7.1 amd64 на ней крутиться postgresql 8.4.2, сервер xeon 2-х процессорный по 4 ядра каждый.
Есть запрос по обновлению данных, приего выполнении загружаеться всего лишь одно ядро на 100% это хорошо видно из top, Запрос выполняесть где то 45-50 минут по нескольку раз в день. Можно ли как нибудь распаралелить так что бы все ядра учавствовали в этом процессе?
запустить 8 запросов для разных порций не пересекающихся данных, но не факт что сильно быстрее будет - в диск упрестя, сейчас не на iowait основной проц уходит ?
>запустить 8 запросов для разных порций не пересекающихся данных, но не факт
>что сильно быстрее будет - в диск упрестя, сейчас не на
>iowait основной проц уходит ?конечно! это в 8 раз эфективнее загрузить головку диска позиционированием ))
>Предустановлена OC FreeBSD 7.1 amd64 на ней крутиться postgresql 8.4.2, сервер xeon
>2-х процессорный по 4 ядра каждый.
>Есть запрос по обновлению данных, приего выполнении загружаеться всего лишь одно ядро
>на 100% это хорошо видно из top, Запрос выполняесть где то
>45-50 минут по нескольку раз в день. Можно ли как нибудь
>распаралелить так что бы все ядра учавствовали в этом процессе?есть алгоритм:
$var = A + B + C;
как его можно распаралелить?
>есть алгоритм:
>$var = A + B + C;
>как его можно распаралелить?очень легко, если переменные векторы или матрицы, к тому же как минимум значание самих перемнных A B C можно вычислять одновремеено
>>есть алгоритм:
>>$var = A + B + C;
>>как его можно распаралелить?
>
>очень легко, если переменные векторы или матрицы, к тому же как минимум
>значание самих перемнных A B C можно вычислять одновремеенодействительно, имея буйную фантазия можно и из примитивной суммы постротить линейную алгебру ... ))
то что из системы с кучей вычислений вероятно можно выбрать некоторый вынезависимые вычисления это и ежу понятно.
имелось ввиду примитивное выражение:
1 + 2 +3 = ?
слабо распаралелить?
>линейную алгебру ... ))
> ...
> имелось ввиду примитивное выражение:а какое отношение имеют примитивные выражения к сложным SQL запросам ? про реляционную алгебру слыхали ? аналогии с линейной понятны ?
>1 + 2 +3 = ?
>слабо распаралелить?это конструктивный вопрос ?, кстати 1 + 2 + 3 + 4 - параллелится SSE
>1 + 2 +3 = ?
>слабо распаралелить?ах да можно сделать одной коммандой - SSE5 PHADDBD
>Можно ли как нибудь
>распаралелить так что бы все ядра учавствовали в этом процессе?Скорее всего нет.
Но нужно ли это делать?
>Скорее всего нет.
>Но нужно ли это делать?Дело в то что всего пару месяцев назад этот запрс выполнялся минут за 5-7, а щас база подросла и стремительно продолжает это делать. Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут а так эдак часика 2.
>>Скорее всего нет.
>>Но нужно ли это делать?
>
>Дело в то что всего пару месяцев назад этот запрс выполнялся минут
>за 5-7, а щас база подросла и стремительно продолжает это делать.давай ты начнешь с детального описания задачи
>Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут
>а так эдак часика 2.мдя, а что вы, уважаемый хотели?
при кривом подходе можно и в сутрки уложится, хотя нет, чтобы за сутки ...
тут второй сервер нужен ...
>[оверквотинг удален]
>давай ты начнешь с детального описания задачи
>
>
>>Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут
>>а так эдак часика 2.
>
>мдя, а что вы, уважаемый хотели?
>при кривом подходе можно и в сутрки уложится, хотя нет, чтобы за
>сутки ...
>тут второй сервер нужен ...по сути в запроси не чего сложного нет, происходит что то вроде репликации c помощью dblink тоесть данные переносяться из однай базы в другую но не все, а по фильтру тоесть только то что нужно, причем в разные бызы из одной и для каждой быза свои правила, но лазеть приходиться по всей базе так как некоторые старые данные могут обновляться и делают это тоже довольно часто.
По поводу кривости или нет я не справшивал, я спросил можноли можно ли или нет заставить postgresql выполнять эту задачу паралельно?
>Дело в то что всего пару месяцев назад этот запрс выполнялся минут
>за 5-7, а щас база подросла и стремительно продолжает это делать.
>Соответсвенно еще через пару месяцев запрос будет выполняться не 45-50 минут
>а так эдак часика 2.задача похоже агрегирование,
значит надо делать агрегирование в несколько уровней,
агрегирование кстати паралелится элементарно, но врядли это будет нужно