Я только что попытался добавить столбец к одной таблице в моей базе данных, но это занимает вечность.
alter table xxx add column frame_weight float;
Я оглянулся и оказалось, что там могут быть замки. Я попробовал следующие шаги.
select * from pg_locks ;
locktype | database | relation | page | tuple | virtualxid | transactionid | classid | objid | objsubid | virtualtransaction | pid | mode | granted | fastpath
-----------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+-------+-----------------+---------+----------
relation | 16387 | 60737 | | | | | | | | 3/136193 | 17977 | AccessShareLock | t | t
relation | 16387 | 60748 | | | | | | | | 3/136193 | 17977 | AccessShareLock | t | t
relation | 16387 | 60781 | | | | | | | | 3/136193 | 17977 | AccessShareLock | t | t
relation | 16387 | 60733 | | | | | | | | 3/136193 | 17977 | AccessShareLock | t | t
relation | 16387 | 60774 | | | | | | | | 3/136193 | 17977 | AccessShareLock | t | t
virtualxid | | | | | 3/136193 | | | | | 3/136193 | 17977 | ExclusiveLock | t | t
relation | 16387 | 11069 | | | | | | | | 2/4820 | 20752 | AccessShareLock | t | t
virtualxid | | | | | 2/4820 | | | | | 2/4820 | 20752 | ExclusiveLock | t | t
relation | 16387 | 60741 | | | | | | | | 3/136193 | 17977 | AccessShareLock | t | f
select * from pg_stat_activity where pid = 17977;
datid | datname | pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | state_change | waiting | state | query
-------+---------+-------+----------+---------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+---------+--------+--------
16387 | xx | 17977 | 16385 | xx | | 127.0.0.1 | | 50626 | 2018-05-10 20:13:06.001069-04 | 2018-05-10 20:13:06.251093-04 | 2018-05-10 20:13:06.251369-04 | 2018-05-10 20:13:06.251372-04 | f | active | SELECT
select pg_cancel_backend (17977);
pg_cancel_backend
-------------------
t
(1 row)
тогда я дал команду прекратить -
select pg_terminate_backend (17977);
pg_terminate_backend
----------------------
t
(1 row)
После попытки всего этого команда alter все еще занимает много времени. Может кто-нибудь подсказать, что может быть не так ??
Если вам не нравится этот вопрос, пожалуйста, не отрицайте. Просто скажи мне, и я уберу это. Я абсолютный новичок, и понижение рейтинга вредит мне, помогая или участвуя в этом сообществе. Спасибо!
Лучший