Alter Query займет много времени - PullRequest
0 голосов
/ 15 мая 2018

Я только что попытался добавить столбец к одной таблице в моей базе данных, но это занимает вечность.

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 все еще занимает много времени. Может кто-нибудь подсказать, что может быть не так ??

Если вам не нравится этот вопрос, пожалуйста, не отрицайте. Просто скажи мне, и я уберу это. Я абсолютный новичок, и понижение рейтинга вредит мне, помогая или участвуя в этом сообществе. Спасибо!

Лучший

...