Как найти запросы на блокировку ожидания на AgentGraph?
Я страдаю от медленной транзакции AgensGraph. Загрузка процессора крайне низкая. Я предполагаю, что ситуация ожидания блокировки.
Как найти запросы блокировки-ожидания?
1 ответ
Вы можете попробовать журнал блокировки ожидания AgensGraph.
Сначала измените параметры на "postgresql.conf"
log_lock_waits = on
deadlock_timeout = 1s
Во-вторых, перезапустите AgensGraph.
$ ag_ctl stop
waiting for server to shut down.... done
server stopped
$ ag_ctl start
server starting
Наконец, запустите запросы и проверьте файл журнала.
[Сессия 1: блок транс]
agens=# begin;
BEGIN
agens=# create (:n{id:1});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
agens=# rollback;
ROLLBACK
agens=#
[Session2: транзакция ожидания блокировки]
agens=# create (:n{id:1});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
Проверьте журнал из файла журнала.
LOG: process 3908 still waiting for ShareLock on transaction 1586 after 1001.058 ms
DETAIL: Process holding the lock: 3906. Wait queue: 3908.
CONTEXT: while inserting index tuple (0,7) in relation "n_id_idx"
STATEMENT: create (:n{id:1});
LOG: process 3908 acquired ShareLock on transaction 1586 after 4639.630 ms
CONTEXT: while inserting index tuple (0,7) in relation "n_id_idx"
STATEMENT: create (:n{id:1});