|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Таблица партицированная. Просто в pgAdmin выполняется без проблем: Код: sql 1. 2. 3. 4. 5.
В одну строчку тоже выполняется. А в dblink удалить не получается. Пробую так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
После запуска функции выдает только 1 и висит. При этом блокировка в БД создается, а дальше не идет. Если сделать не по шагам, а в одну строку тоже висит, просто непонятно где именно. Подключение и прямое и через pgbouncer - результат одинаковый. Помогите разобраться пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 17:42 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблиц, посмотрите на локи. имхую -- ваш дблинк ждет окончания ваше же вызывающей его транзакции, чтобы повесить лок. т.е. если вы хотите поглядывать за табличкой -- посматривайте в коротенькие автономии, а не из основной транзы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 17:48 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwqУдалитель таблиц, посмотрите на локи. имхую -- ваш дблинк ждет окончания ваше же вызывающей его транзакции, чтобы повесить лок. т.е. если вы хотите поглядывать за табличкой -- посматривайте в коротенькие автономии, а не из основной транзы. Просто в одну строку тот же самый результат: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:03 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwqУдалитель таблиц, посмотрите на локи. имхую -- ваш дблинк ждет окончания ваше же вызывающей его транзакции, чтобы повесить лок. т.е. если вы хотите поглядывать за табличкой -- посматривайте в коротенькие автономии, а не из основной транзы. локов там появляется два, у одного granted f у другого t. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:05 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблицqwwqУдалитель таблиц, посмотрите на локи. имхую -- ваш дблинк ждет окончания ваше же вызывающей его транзакции, чтобы повесить лок. т.е. если вы хотите поглядывать за табличкой -- посматривайте в коротенькие автономии, а не из основной транзы. Просто в одну строку тот же самый результат: Код: sql 1.
йоптель, покажите предшествующие строки головной транзакции , вызывающей эту строку. вангую -- мы там обратились уже к тому, чаво лочить собрались. дедлок. только неразрешимый в автомате, т.к. дерево не видит "деток" дблинка. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:08 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблицqwwqУдалитель таблиц, посмотрите на локи. имхую -- ваш дблинк ждет окончания ваше же вызывающей его транзакции, чтобы повесить лок. т.е. если вы хотите поглядывать за табличкой -- посматривайте в коротенькие автономии, а не из основной транзы. локов там появляется два, у одного granted f у другого t. да и в пж--стат-активити будет видно ожидание, наверняка ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:09 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwqУдалитель таблицпропущено... Просто в одну строку тот же самый результат: Код: sql 1.
йоптель, покажите предшествующие строки головной транзакции , вызывающей эту строку. вангую -- мы там обратились уже к тому, чаво лочить собрались. дедлок. только неразрешимый в автомате, т.к. дерево не видит "деток" дблинка. Из dblink до этого ничего не вызывается. А с таблицей делается вот что: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:11 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwqдедлок. только неразрешимый в автомате, т.к. дерево не видит "деток" дблинка. ого, а как же тогда табличку удалить, если не через dblink? В EXECUTE не получается вставить lock table. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:13 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблицqwwqдедлок. только неразрешимый в автомате, т.к. дерево не видит "деток" дблинка. ого, а как же тогда табличку удалить, если не через dblink? В EXECUTE не получается вставить lock table. через дблинк можно, но обращаться в самой головной транзакции к той же табле нельзя. вы же не в стороннем клиенте сидите -- все, на что посмотрели до конца транзы будет залочено так или иначе. поэтому и прочую деятельность так же делать надо -- в автономиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:18 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwqУдалитель таблицпропущено... ого, а как же тогда табличку удалить, если не через dblink? В EXECUTE не получается вставить lock table. через дблинк можно, но обращаться в самой головной транзакции к той же табле нельзя. вы же не в стороннем клиенте сидите -- все, на что посмотрели до конца транзы будет залочено так или иначе. поэтому и прочую деятельность так же делать надо -- в автономиях. Это вы это: Код: sql 1.
имеете ввиду? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:26 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблицqwwqпропущено... через дблинк можно, но обращаться в самой головной транзакции к той же табле нельзя. вы же не в стороннем клиенте сидите -- все, на что посмотрели до конца транзы будет залочено так или иначе. поэтому и прочую деятельность так же делать надо -- в автономиях. Это вы это: Код: sql 1.
имеете ввиду? Читаю про них: При этом становятся возможны взаимоблокировки в одном сеансе, так как автономная транзакция может оказаться в спутанном состоянии с одной из приостановленных транзакций в сеансе. Какая-то мутноватая вещь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:28 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwqУдалитель таблицпропущено... ого, а как же тогда табличку удалить, если не через dblink? В EXECUTE не получается вставить lock table. через дблинк можно, но обращаться в самой головной транзакции к той же табле нельзя. вы же не в стороннем клиенте сидите -- все, на что посмотрели до конца транзы будет залочено так или иначе. поэтому и прочую деятельность так же делать надо -- в автономиях. Прочитал раз 20 и вроде дошло... вы имели ввиду что в головной транзакции нельзя Код: sql 1.
делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:41 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблиц, вообще говоря для работы с транзакционным ддл человека надо пропускать через греблю на галере обычной субд. там вам сразу объяснят, что ддл в транзакции не бывает. совсем. а потом уже знакомиться с идеологией транзакционности ддл в пж. вообще говоря дырявой, и т.п. но зато позволяющей многое делать руками. (но там и помнить, где рыбу заворачивали, да) лучше расскажите, что вам на самом деле надо, а не то, где вы пытаетесь копать, посколь думаете, что там рыхлее. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 20:14 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwq лучше расскажите, что вам на самом деле надо, а не то, где вы пытаетесь копать, посколь думаете, что там рыхлее. Нужно просто удалить дочернюю таблицу в процедуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 10:32 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
Удалитель таблицqwwq лучше расскажите, что вам на самом деле надо, а не то, где вы пытаетесь копать, посколь думаете, что там рыхлее. Нужно просто удалить дочернюю таблицу в процедуре. в какой дуре ? в которой ещё что--то делается ? и именно с этой табличкой ? и вот то, что деется -- судя по всему и есть то, "что вам надо на самом деле" вы можете всё выполнить в одной и той же транзакции. на кой вам пытаться сделать что--то автономно, если вы ни хера не понимаете в локах, автономиях и дедлоках головной с автономией ? //как я помню, партман так когда--то и делал, или пытался. если я правильно понял -- вы тот самый ацидофил, который нас недавно пугал по поводц "транзакций в плпгскл" ? или всёж таки можете попытаться получить представление о транзакциях, конкуренции, "автономиях" (дблинк , или встроенное новьё) и т.п. И потом таки решить для себя -- нужны ли вам длинные локи в длинных (как правило рассчётных) транзакциях, с наприятностями типа отката ддл при ошибке в расчете ( и соответственными очередями длинных транзакций на локи таблиц для ддл), или всё же всю ддл-работу вынести в автономии, и позаботиться о том, чтобы не залочить изменяемое в автономия головной транзакцией. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 11:31 |
|
Не могу удалить таблицу через dblink
|
|||
---|---|---|---|
#18+
qwwq, вы, юный падаван, оказались абсолютно правы. Достаточно было исключить все операции из EXECUTE и выполнить их в одной транзакции в dblink. Иначе блокировка из дблинка ожидала окончания ALTER и EXECUTE и висела бесконечно. Большое спасибо за помощь, Дима! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 11:50 |
|
|
start [/forum/topic.php?fid=53&fpage=68&tid=1996304]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 408ms |
0 / 0 |