Может ли порожденный процесс Postgresql управляться PHP-скриптом spawner? - PullRequest
1 голос
/ 30 мая 2009

У меня есть сценарий PHP CLI, который обрабатывает CSV-файл, вставляя его содержимое в таблицу в базе данных Postgresql. Это на сервере Ubuntu. Я использую schedtool, чтобы контролировать близость всего сценария. Schedtool используется для запуска самого скрипта с опцией -e. К сожалению, с помощью htop я вижу, что поток базы данных создается как совершенно другой поток и не зависит от параметров сродства.

Можно ли каким-то образом заставить процесс базы данных наследовать все параметры сродства из PHP-скрипта spawner?


Я только что нашел ответ - как я читал некоторые примеры файлов Postgresql для Ruby:).

Мой лучший выбор - получить очень точный PID потока Postgresql, выполняющего текущий скрипт, с NOTIFY - LISTEN. Как сказал [depesz], Postgres использует только 1 ядро. С schedtool я все еще могу контролировать, на каком ядре оно работает, а с cpulimit я могу управлять им дальше.

Ответы [ 2 ]

0 голосов
/ 03 июня 2009

Postgres не использует темы. Каждое соединение обрабатывается однопоточным процессом. Таким образом, одно соединение может использовать только одно ядро. Хотя операционная система может перемещать ее в разные ядра, она будет использовать только по одному за раз.

Если вы настаиваете на том, чтобы следить за postgres, «SELECT pg_backend_pid ()» выдаст вам PID процесса postgres без каких-либо уведомлений / LISTEN. Хотя, в общем, вы не хотите пытаться создать приятный процесс postgres. Вы можете заблокировать другие процессы с более высоким приоритетом. Тогда то, что вы считали процессом с низким приоритетом, больше не является таким низким.

Если вы просто делаете кучу вставок из csv, то написание скрипта, вероятно, мало чем поможет. Postgres, вероятно, выполняет большую часть работы, и это, вероятно, IO, так что, опять же, обслуживание может не принести вам много. Вы могли бы, однако, спать время от времени. Вставить на 50 миллисекунд, поспать некоторое время, ...

0 голосов
/ 30 мая 2009

номер

Бэкэнд Postgres всегда порождается из процесса postmaster, поэтому нет способа передать параметры сходства (какими бы они ни были) из сценария php в бэкэнд postgres.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...