|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
Необходимо узнать состояние текущего соединения, т.е. в текущем соединении открыта транзакция или нет? Для других соединений вроде как понятно через pg_stat_activity. А вот для текущего соединения не понятно. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2017, 15:59 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
big-trotНеобходимо узнать состояние текущего соединения, т.е. в текущем соединении открыта транзакция или нет? Для других соединений вроде как понятно через pg_stat_activity. А вот для текущего соединения не понятно. Спасибо. посмотреть pg_stat_activity для своего соединения ( pg_backend_pid() ) хотя мож проще можно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2017, 17:07 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
ЖEHbKA, оно всегда активно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2017, 17:10 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
Думаю надо использовать PQtransactionStatus ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2017, 17:29 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
В Postgresql 10 появится функция txid_current_ifassigned(). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 15:10 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
LeXa NalBat, Использование PQtransactionStatus дает нужный результат, но только в Си-шной программе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 15:55 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
LeXa NalBatВ Postgresql 10 появится функция txid_current_ifassigned(). а в ридонли транзах , например на стендбае, как оно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 16:09 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
qwwqа в ридонли транзах , например на стендбае, как оно ?не пробовал 10-ку. на 9.5 txid_current() не выполняется Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 17:07 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
LeXa NalBatВ Postgresql 10 появится функция txid_current_ifassigned().ридонли (даже не объявленная явно) транза не приобретает txid_current, если не вызвать txid_current(). если я верно помню. т.е. txid_current_ifassigned() обнаружит не отсутствие транзакции, а отсутствие её инициализации "как пишущей". (например в момент вызова txid_current(), или insert /delete и т.п., если до этого номер тр-ии оставался "виртуальным") Код: sql 1. 2. 3. 4.
--проследите за SELECT * FROM pg_stat_activity ; -- моментом появления backend_xid и select * from pg_locks --locktype ='transactionid' т.е. номера транз идут не в порядке их старта, а в порядке инициации "как пишущих" [присвоения "реального тхид вместо виртуального] . я где--то специально ставил вызов PERFORM txid_current(); чтобы упорядочить txid конкурентов по строке вызова. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2017, 11:29 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
Вообще в порядке бреда для микросекундной точности достаточно: Код: sql 1.
Не очень ясен смысл. Обычно открыта ли транзакция приложение знает само. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2017, 12:08 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
MelkijОбычно открыта ли транзакция приложение знает само. В однопоточном приложении известно состояние транзакции. В многопоточном при условии, что соединение с БД является разделяемым ресурсом этого приложения, то не знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 10:54 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
big-trot, тоже знает. Иначе что, собираетесь допускать, что потоки пишут в чужие транзакции? Соединение или пул соединений ресурс разделяемый, но на транзакцию предоставляется потоку эксклюзивно. Иначе вы в принципе не можете использовать в этом приложении транзакции и поставленный в теме вопрос решён по определению - у вас statement based pool, в котором транзакций из нескольких запросов быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 11:03 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
Melkijтоже знает. Иначе что, собираетесь допускать, что потоки пишут в чужие транзакции? Соединение или пул соединений ресурс разделяемый, но на транзакцию предоставляется потоку эксклюзивно. Иначе вы в принципе не можете использовать в этом приложении транзакции и поставленный в теме вопрос решён по определению - у вас statement based pool, в котором транзакций из нескольких запросов быть не может. Чтобы отдать потоку соединение нужно узнать его состояние, иначе при открытой транзакции в одном потоке соединение может быть отдано другому потоку. Чтобы этого не было и был поставлен вопрос темы. Если приложение однопоточно, то нет необходимости знать состояние соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 11:45 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
С точностью до точности системного таймера: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 12:55 |
|
Как узнать состояние текущего соединения
|
|||
---|---|---|---|
#18+
big-trotMelkijОбычно открыта ли транзакция приложение знает само. В однопоточном приложении известно состояние транзакции. В многопоточном при условии, что соединение с БД является разделяемым ресурсом этого приложения, то не знает.гм. разделяемый ресурс -- пул. поток забирает из него соединение (из коллекции/вектора и тп). что--то в нем , в соединении, тут же делает. и тут же отдает, после использования, (т.е. возвращает в коллекцию, вектор и т.п.). при недостатке -- может дооткрыть, или встать в очередь при максимуме. по крайней мере я так пул делал в малознакомой мне жабке. просто следил за руками. хотя у меня короткие транзы были -- на один вызов хранимки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 20:11 |
|
|
start [/forum/topic.php?fid=53&fpage=69&tid=1996336]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 151ms |
0 / 0 |