व्यापक रूप से उपयोग किया जाने वाला उपकरण SQL कमांड है EXPLAIN ANALYZE
, संभवतः उत्तर में अधिक विवरण के लिए अधिक विकल्पों के साथ। यह योजनाकार अनुमान और वास्तविक निष्पादन समय के साथ क्वेरी योजना को आउटपुट करता है।
आप कैश को क्यों साफ़ करना चाहेंगे? आमतौर पर अधिक संभावना उपयोग मामला यह है कि कैश पॉपुलेटेड है। यदि आप अभी भी उस मार्ग पर जाना चाहते हैं, तो SO पर संबंधित उत्तर दिया गया है ।
कैश को रीसेट नहीं करना, यहां कई पुनरावृत्तियों के साथ परीक्षण करने के दो सरल तरीके हैं:
सरल यूडीएफ
EXPLAIN ANALYZE
SELECT f_myfunc(g) FROM generate_series (1,1000) AS t(g);
या यादृच्छिक इनपुट के साथ - उदाहरण में 0 और 5000 के बीच यादृच्छिक संख्या:
EXPLAIN ANALYZE
SELECT f_myfunc((random()*5000)::int) FROM generate_series (1,1000) AS t(g);
या एक वास्तविक जीवन तालिका के साथ:
EXPLAIN ANALYZE
SELECT f_myfunc(my_column) FROM my_tbl; -- LIMIT n
अधिक जटिल कार्य / प्रश्न
CREATE FUNCTION f_test(ct int, sql text) RETURNS void AS
$func$
DECLARE
i int;
BEGIN
FOR i IN 1 .. $1 LOOP
EXECUTE sql; -- not safe against SQLi!
END LOOP;
END
$func$ LANGUAGE plpgsql
कॉल करें:
EXPLAIN ANALYZE
SELECT f_test(100, $x$SELECT * from MADLIB.gp('mock3', '{x1, x2, x3}', '{y1}', 100,20, 3)$x$
सावधान : क्वेरी वास्तव में निष्पादित है!
सावधान : सार्वजनिक उपयोग के लिए फिट नहीं है। संभव एसक्यूएल इंजेक्शन।
यदि आवश्यक हो तो फिर से, आप यादृच्छिक मापदंडों का उपयोग कर सकते हैं। संभवतः के USING
खंड के साथ EXECUTE
।
pgbench
; आप इसे कस्टम स्क्रिप्ट के साथ चला सकते हैं जो आप चाहते हैं। Pg को रोकने और पुनः आरंभ करने और OS डिस्क कैश को छोड़ने के लिए एक आवरण खोल स्क्रिप्ट के साथ आपके पास सबसे अधिक जरूरत है।