powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что делать с блокировками?
9 сообщений из 9, страница 1 из 1
Что делать с блокировками?
    #32654317
W
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
W
Гость
Как бороться с блокировками? Не перегружать же постоянно сервер...
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32654521
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бороться с блокировками
Не блокировать.
А если чесно, то не совсем понятно, что имеется ввиду.
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32654605
W
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
W
Гость
Имеется ввиду вот что:
есть удаленный сервер,
на нем установлен pstgresql,
доступ к нему у меня есть только через phppgadmin,
на сервере интенсивно идет добавление информации и периодически возникают блокировки (висит куча процессов).

проблема пока решается путем дергания админа и перегрузки сервера.
Я думаю, что есть другие пути решения.
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32654766
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что возникают блокировки, это ещё не проблема. Проблема почему они не исчезают.
У меня на сервере в момент интесивных телодвижений программмеров висит до 40 процессов. Блокировок тоже уйма, но всё работает более или менее нормально. Проблема возникала при ошибках в программах, когда программер забывал подтверждать транзакцию. Тогда происходила блокировка какой-нить таблицы(страницы), и тогда остальные процессы замирали в ожидании.
Попробуй разобраться, почему транзакция не завершается.
Для решения проблемы ничего умнее
Код: plaintext
kill -9
не придумал. Либо по списку процессов
Код: plaintext
ps -ef|grep  postgres:
вычислял какой процесс блокировал, либо то же самое по блокировкам смортрел, запрос такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT pg_class.relname AS relation,
    pg_database.datname AS "database",
    l."transaction",
    l."mode",
    l.granted as "grant",
    pg_stat_activity.datname,
    pg_stat_activity.procpid,
    pg_stat_activity.usename,
    pg_stat_activity.current_query  --l.pid 
FROM pg_lock_status() l(relation oid, "database" oid, "transaction" xid, pid
    integer, "mode" text, granted boolean)
    LEFT JOIN  pg_class
    ON (l.relation = pg_class.reltype)
    LEFT JOIN pg_database
    ON (l."database" = pg_database.oid)
    LEFT JOIN pg_stat_activity
    ON (l.pid = pg_stat_activity.procpid)
ORDER BY pg_database.datname, pg_stat_activity.datname;
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32654817
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wна сервере интенсивно идет добавление информации и периодически возникают блокировки (висит куча процессов).

что заставляет думать, что это именно блокировки?

что в списке процессов (пусть админ посмотрит)?

не используется ли случайно pg_pconnect()?
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32655045
W
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
W
Гость
Скорее всего, я действительно где-то делаю что-то не так, поэтому блокировки не исчезают. Блокировки я смотрел из вьюхи pg_locks и запросом, который выше. Количество процессов тоже можно увидеть в phppgadmin.
Разобраться самому пока не хватает опыта :(
Кратко по системе:
есть несколько сканеров написанных на пхп, они обрабатывают определенные веб -странички и записывают полученную информацию в базу. Запись производится с помощью одной процедуры. Сама процедура делает селекты, добавляет новые записи (реже обновляет старые), вызывает другую процедуру. Кроме этого, к полученным данным через сайт сделан доступ. Мне кажется, блокирови создает процедура добавления. Как ее можно модифицировать, чтобы этого не было? Может есть какие-нибудь ключевые слова?
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32655054
W
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
W
Гость
Sad Spirit
...
что в списке процессов (пусть админ посмотрит)?

не используется ли случайно pg_pconnect()?

Что именно посмотреть админу в списке процессов?
Используется не pg_pconnect(), а pg_connect() (функция php)
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32655112
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятно... может действительно быть проблема, если транзакции при добавлении идут долго, и обновляется таблица, на которой есть внешние ключи.

рекомендуется внешние ключи создавать как DEFERRABLE INITIALLY DEFERRED
...
Рейтинг: 0 / 0
Что делать с блокировками?
    #32655145
W
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
W
Гость
Sad Spiritпонятно... может действительно быть проблема, если транзакции при добавлении идут долго, и обновляется таблица, на которой есть внешние ключи.

рекомендуется внешние ключи создавать как DEFERRABLE INITIALLY DEFERRED

Ок, попробую.
Такой вопрос еще, а COMMIT в процедуре после операций вставки и обновления не поможет? Вообще, нужно ли явно управлять транзакциями в postgresql?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что делать с блокировками?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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