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

पोस्टग्रेज:वैक्यूम कमांड मृत टुपल्स को साफ नहीं करता है

VACUUM (VERBOSE) का प्रयोग करें यह क्या कर रहा है और क्यों कर रहा है, इसके विस्तृत आंकड़े प्राप्त करने के लिए।

मृत टुपल्स को नहीं निकालने के तीन कारण हैं:

  1. एक लंबे समय से चल रहा लेन-देन है जिसे बंद नहीं किया गया है। आप बुरे लड़कों को ढूंढ सकते हैं

    SELECT pid, datname, usename, state, backend_xmin
    FROM pg_stat_activity
    WHERE backend_xmin IS NOT NULL
    ORDER BY age(backend_xmin) DESC;
    

    आप pg_cancel_backend() . से लेन-देन से छुटकारा पा सकते हैं या pg_terminate_backend()

  2. ऐसे तैयार लेनदेन हैं जो प्रतिबद्ध नहीं किए गए हैं। आप उन्हें

    . के साथ ढूंढ सकते हैं
    SELECT gid, prepared, owner, database, transaction
    FROM pg_prepared_xacts
    ORDER BY age(transaction) DESC;
    

    उपयोगकर्ता COMMIT PREPARED या ROLLBACK PREPARED उन्हें बंद करने के लिए।

  3. प्रतिकृति स्लॉट हैं जिनका उपयोग नहीं किया जाता है। इनके साथ खोजें

    SELECT slot_name, slot_type, database, xmin
    FROM pg_replication_slots
    ORDER BY age(xmin) DESC;
    

    pg_drop_replication_slot() का उपयोग करें अप्रयुक्त प्रतिकृति स्लॉट को हटाने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL अस्थायी टेबल

  2. PostgreSQL विशेषाधिकार और उपयोगकर्ता प्रबंधन - आपको क्या पता होना चाहिए

  3. UNION, EXCEPT, या INTERSECT का उपयोग करते समय PostgreSQL में 'ERROR:  कॉलम "colname" मौजूद नहीं है' ठीक करें

  4. बहु-पंक्ति क्वेरी के लिए psql की \ copy का उपयोग करें

  5. कैसे टैंड () PostgreSQL में काम करता है