PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

त्रिशंकु क्वेरी समाप्त करें (लेनदेन में निष्क्रिय)

यह एक सामान्य पोस्टग्रेज उत्तर है, और हरोकू के लिए विशिष्ट नहीं है

(इस प्रश्न का सरल-बेवकूफ उत्तर हो सकता है ... बस postgresql को पुनरारंभ करें। यह मानते हुए कि यह वांछनीय नहीं है या कोई विकल्प नहीं है ...)

इस sql को चलाकर PID का पता लगाएं:

SELECT pid , query, * from pg_stat_activity
  WHERE state != 'idle' ORDER BY xact_start;

(क्वेरी को पोस्टग्रेज के संस्करण के आधार पर मरम्मत की आवश्यकता हो सकती है - अंत में, बस pg_stat_activity से * चुनें)। आपको पहले (बाएं) कॉलम में पिड मिलेगा, और पहली (शीर्ष) पंक्ति वह क्वेरी हो सकती है जिसे आप समाप्त करना चाहते हैं। मैं मान लूंगा कि पिड 1234 नीचे है।

आप SQL के माध्यम से किसी क्वेरी को रद्द कर सकते हैं (अर्थात शेल एक्सेस के बिना) जब तक कि यह आपकी है या आपके पास सुपर उपयोगकर्ता एक्सेस है:

select pg_cancel_backend(1234);

यह 1234-क्वेरी को रद्द करने का "दोस्ताना" अनुरोध है, और कुछ भाग्य के साथ यह थोड़ी देर बाद गायब हो जाएगा। आखिरकार, यह अधिक कुशल है:

select pg_terminate_backend(1234);

यदि आपके पास शेल एक्सेस और रूट है या अनुमतियां पोस्टग्रेज हैं तो आप इसे शेल से भी कर सकते हैं। "रद्द" करने के लिए कोई यह कर सकता है:

kill -INT 1234

और "समाप्त" करने के लिए, बस:

kill 1234

नहीं करें:

kill -9 1234

... जिसके परिणामस्वरूप अक्सर पूरा पोस्टग्रेज सर्वर आग की लपटों में गिर जाएगा, फिर आप पोस्टग्रेज को फिर से शुरू कर सकते हैं। पोस्टग्रेज बहुत मजबूत है, इसलिए डेटा दूषित नहीं होगा, लेकिन मैं किसी भी मामले में "किल -9" का उपयोग करने के खिलाफ अनुशंसा करता हूं :-)

लंबे समय तक चलने वाले "लेनदेन में निष्क्रिय" का अर्थ अक्सर यह होता है कि लेन-देन को "प्रतिबद्ध" या "रोलबैक" के साथ समाप्त नहीं किया गया था, जिसका अर्थ है कि एप्लिकेशन छोटी है या लेनदेन संबंधी डेटाबेस के साथ काम करने के लिए ठीक से डिज़ाइन नहीं किया गया है। लंबे समय तक चलने वाले "निष्क्रिय लेन-देन" से बचना चाहिए, क्योंकि इससे प्रदर्शन संबंधी बड़ी समस्याएं भी हो सकती हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClusterControl के साथ PostgreSQL प्रबंधन और स्वचालन

  2. PostgreSQL कॉलम 'foo' मौजूद नहीं है

  3. PostGIS का उपयोग करके दिए गए बिंदु के लिए निकटतम पड़ोसियों का पता लगाएं?

  4. PostgreSQL अपग्रेड को खोलना

  5. PostgreSQL:मल्टी-कॉलम अद्वितीय बाधा के आधार पर ऑटो-इंक्रीमेंट