postgresql
अलग कार्य
खोज…
सरल आँकड़े: न्यूनतम (), अधिकतम (), एवीजी ()
किसी तालिका के स्तंभ में एक मान के कुछ सरल आँकड़े निर्धारित करने के लिए, आप एक कुल फ़ंक्शन का उपयोग कर सकते हैं।
यदि आपकी 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 बाइट्स में सबसे तेजी से बढ़ रही है और संभवतः मेमोरी लीक का हिस्सा है।