यह निर्धारित करने के लिए कि पोस्टग्रेएसक्यूएल में [बेकार कनेक्शन] के साथ निष्क्रिय लेन-देन कैसे करें?


24

इस सवाल पर एक टिप्पणी के अनुसार मैंने PostgreSQL 9.2 में निष्क्रिय कनेक्शन के बारे में पूछा , कुछ अनकमिज़्म लेनदेन (संभवतः उन निष्क्रिय कनेक्शनों में से कुछ से संबंधित) कुछ प्रदर्शन समस्याओं का कारण हो सकता है।

यह निर्धारित करने के लिए एक अच्छा तरीका है कि क्या बिना लेन-देन के लेनदेन हैं (बोनस अंक अगर यह जानने का एक तरीका है कि क्या वे कनेक्शन निष्क्रिय हैं या नहीं)?

बहुत बहुत धन्यवाद!


2
एक नजर है pgtop। आप आउटपुट में "निष्क्रिय में लेनदेन" दिखाने वाली पंक्तियों के लिए भी शिकार कर सकते हैं ps aux
dezso

@dezso - pgtopदिलचस्प लग रहा है; क्या विंडोज के लिए बराबर है?
मैक्स वर्नोन

@MaxVernon कुछ संकेत हैं कि यह विंडोज पर काम करने वाला है लेकिन इसका कोई ठोस उदाहरण नहीं देखा गया है। लेकिन यह अभी भी एक (अपेक्षाकृत) सरल पर्ल प्रोजेक्ट है, इसलिए ... और वैसे भी, यह pg_stat * विचारों पर काम करता है।
dezso

जवाबों:


16

यदि आप यह देखना चाहते हैं कि आपके पास खुले लेन-देन के कितने निष्क्रिय कनेक्शन हैं, तो आप उपयोग कर सकते हैं:

select * 
from pg_stat_activity
where (state = 'idle in transaction')
    and xact_start is not null;

यह खुले कनेक्शन की एक सूची प्रदान करेगा जो निष्क्रिय अवस्था में हैं, जिसमें एक खुला लेनदेन भी है।

ऐसा कहने के बाद, मैं निष्क्रिय लेन-देन में एक खुला कनेक्शन फिर से नहीं बना सकता, जिसमें एक खुला लेनदेन हो। शायद कोई और कैसे यह करने के लिए विवरण प्रदान कर सकता है।


3
ध्यान रखें कि stateकॉलम केवल 9.2 में मौजूद है। और मेरे लिए ऐसा लगता है कि उचित स्थिति 'लेन-देन में निष्क्रिय' है।
dezso

1
मैं dezso से सहमत हूं।
फ्रैंक

1
state = 'idle'करता नहीं एक खुला लेन-देन से संकेत मिलता है।
a_horse_with_no_name

2
I cannot recreate an open connection in the idle state that has an open transaction. डेटाबेस के लिए दो कनेक्शन खोलें, और टाइप करें "शुरू;" एक में। अन्य में उपरोक्त क्वेरी चलाते हैं, और आपके पास एक होगा idle in transaction
X-Istence
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.