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

Postgresql अनुक्रमिक स्कैन 500 मिलियन पंक्तियों पर धीमा प्रदर्शन

केवल कुछ चीजें हैं जो इस प्रश्न में मदद करेंगी:

  • वास्तविक स्कैनिंग समस्या नहीं लगती (इसमें 42 सेकंड का समय लगा), लेकिन यदि तालिका को RAM में रखा जा सकता है, तो यह तेज़ हो सकता है।

  • आपकी मुख्य समस्या प्रकार है, जो PostgreSQL पहले से ही समानांतर है।

    कुछ चीज़ें हैं जिन्हें आप ट्यून कर सकते हैं:

    • बढ़ाएँ work_mem जितना संभव हो सके, जो क्रम को तेज कर देगा।

    • बढ़ाएँ max_worker_processes (इसे पुनः आरंभ करने की आवश्यकता होगी), max_parallel_workers और max_parallel_workers_per_gather ताकि क्वेरी के लिए अधिक कोर का उपयोग किया जा सके।

      PostgreSQL में एक तालिका के लिए उपयोग करने के लिए तैयार समानांतर श्रमिकों की अधिकतम संख्या की गणना करने के लिए एक आंतरिक तर्क है:यह जितने समानांतर श्रमिकों पर विचार करेगा

      लॉग<उप>3 (तालिका आकार / min_parallel_table_scan_size )

      आप इसे इससे अधिक प्रक्रियाओं का उपयोग करने के लिए बाध्य कर सकते हैं:

      ALTER TABLE ohlcv SET (parallel_workers = 20);
      

      लेकिन max_parallel_workers अभी भी ऊपरी सीमा है।

यदि टेबल पर कोई डिलीट और अपडेट नहीं है, और डेटा को क्रमबद्ध क्रम में डाला गया है, तो आप ORDER BY को छोड़ कर दूर हो सकते हैं खंड, बशर्ते आपने synchronize_seqscans = off . सेट किया हो ।




  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 regexp_matches सिंटैक्स अपेक्षा के अनुरूप काम नहीं कर रहा है

  2. तारों को संग्रहित करने के लिए डेटा प्रकार टेक्स्ट का उपयोग करने का कोई डाउनसाइड्स?

  3. SQL को BEGIN से डेटा मिलता है; ...; समाप्त; पायथन में ब्लॉक करें

  4. पोस्टग्रेज:कॉलम पर डिस्टिंक्ट का चयन जॉइन के साथ अलग-अलग परिणाम नहीं लौटा रहा है

  5. क्या आप CREATE TABLE परिभाषा में एक इंडेक्स बना सकते हैं?