खोज…


सरल आँकड़े: न्यूनतम (), अधिकतम (), एवीजी ()

किसी तालिका के स्तंभ में एक मान के कुछ सरल आँकड़े निर्धारित करने के लिए, आप एक कुल फ़ंक्शन का उपयोग कर सकते हैं।

यदि आपकी individuals तालिका है:

नाम आयु
एली 17
अमांडा 14
अलना 20

आप यह कथन न्यूनतम, अधिकतम और औसत मूल्य प्राप्त करने के लिए लिख सकते हैं:

SELECT min(age), max(age), avg(age)
FROM individuals;

परिणाम:

मिनट अधिकतम औसत
14 20 17

string_agg (अभिव्यक्ति, सीमांकक)

आप स्ट्रिंग_गैग string_agg() फ़ंक्शन का उपयोग करके सीमांकक द्वारा अलग किए गए तारों को string_agg() कर सकते हैं।

यदि आपकी individuals तालिका है:

नाम आयु देश
एली 15 अमेरीका
अमांडा 14 अमेरीका
अलना 20 रूस

आप प्रत्येक देश से नाम पाने के लिए SELECT ... GROUP BY स्टेटमेंट लिख सकते हैं:

SELECT string_agg(name, ', ') AS names, country 
FROM individuals 
GROUP BY country;

ध्यान दें कि आपको एक GROUP BY क्लॉज़ का उपयोग करने की आवश्यकता है क्योंकि string_agg() एक कुल फ़ंक्शन है।

परिणाम:

नाम देश
एली, अमांडा अमेरीका
अलना रूस

अधिक PostgreSQL कुल कार्य यहाँ वर्णित है

regr_slope (Y, X): (X, Y) जोड़े द्वारा निर्धारित न्यूनतम-वर्ग-फिट रैखिक समीकरण का ढलान

यह बताने के लिए कि regr_slope (Y, X) का उपयोग कैसे करें, मैंने इसे वास्तविक विश्व समस्या के लिए लागू किया। जावा में, यदि आप मेमोरी को ठीक से साफ नहीं करते हैं, तो कचरा अटक सकता है और मेमोरी को भर सकता है। आप विभिन्न वर्गों की मेमोरी उपयोग के बारे में हर घंटे आंकड़े डंप करते हैं और इसे विश्लेषण के लिए पोस्टग्रेज डेटाबेस में लोड करते हैं।

सभी मेमोरी लीक उम्मीदवारों के पास अधिक समय बीतने के साथ अधिक मेमोरी का उपभोग करने की प्रवृत्ति होगी। यदि आप इस प्रवृत्ति की साजिश करते हैं, तो आप एक रेखा के ऊपर और बाईं ओर जाने की कल्पना करेंगे:

    ^
    |
s   |  Legend:
i   |  *  - data point
z   |  -- - trend
e   |
(   |
b   |                 *
y   |                     --
t   |                  --
e   |             * --    *
s   |           --
)   |       *--      *
    |     --    *
    |  -- *
   --------------------------------------->
                      time

मान लें कि आपके पास एक टेबल है जिसमें ढेर डंप हिस्टोग्राम डेटा (कक्षाओं की एक मैपिंग है कि वे कितनी मेमोरी का उपभोग करते हैं):

CREATE TABLE heap_histogram (
    -- when the heap histogram was taken
    histwhen timestamp without time zone NOT NULL, 
    -- the object type bytes are referring to
    -- ex: java.util.String
    class character varying NOT NULL,
    -- the size in bytes used by the above class
    bytes integer NOT NULL
);

प्रत्येक वर्ग के लिए ढलान की गणना करने के लिए, हम कक्षा के आधार पर समूह बनाते हैं। HAVING खंड> 0 यह सुनिश्चित करता है कि हम केवल एक सकारात्मक ढलान (ऊपर और बाईं ओर जाने वाली रेखा) के साथ उम्मीदवार प्राप्त करें। हम ढलान से उतरते हुए क्रमबद्ध करते हैं ताकि हमें शीर्ष पर स्मृति वृद्धि की सबसे बड़ी दर के साथ कक्षाएं मिलें।

-- epoch returns seconds
SELECT class, REGR_SLOPE(bytes,extract(epoch from histwhen)) as slope
    FROM public.heap_histogram
    GROUP BY class
    HAVING REGR_SLOPE(bytes,extract(epoch from histwhen)) > 0
    ORDER BY slope DESC ;

आउटपुट:

         class             |        slope         
---------------------------+----------------------
 java.util.ArrayList       |     71.7993806279174
 java.util.HashMap         |     49.0324576155785
 java.lang.String          |     31.7770770326123
 joe.schmoe.BusinessObject |     23.2036817108056
 java.lang.ThreadLocal     |     20.9013528767851

आउटपुट से हम देखते हैं कि java.util.ArrayList की मेमोरी खपत प्रति सेकंड 71.799 बाइट्स में सबसे तेजी से बढ़ रही है और संभवतः मेमोरी लीक का हिस्सा है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow