मैं psql का उपयोग करते हुए SQL- क्वेरीज़ को कैसे समय दे सकता हूं?


238

मैं अपने PostgreSQL डेटाबेस को फिर से कुछ SQL- क्वेरीज़ बेंचमार्क करना चाहूंगा। वहाँ किसी भी तरह से मैं समय एसक्यूएल-प्रश्नों का उपयोग कर सकता है psql?


4
PostgreSQL प्रश्नों के बेंचमार्किंग के बारे में अधिक जानकारी के लिए: dba.stackexchange.com/q/42012/9622
— Franck Dernoncourt

जवाबों:


321

दर्ज करके समय को चालू करें:

\timing


1
बैश से, "-c" विकल्प psqlइस सेटिंग की अनुमति नहीं देता है। आप ऐसा कुछ के साथ कर सकते हैं: psql --o /dev/null <<EOF \timing select 1 EOF
— 3manuek

6
या करते हैंpsql -c '\timing' -c 'select 1'
— cdmckay

72

टाइमिंग \timingpsql प्रॉम्प्ट पर चालू की जा सकती है (जैसा कि कालेब ने पहले ही कहा था)।

यदि आप 8.4 या इसके बाद के संस्करण पर हैं, तो आप एक वैकल्पिक / बंद तर्क जोड़ सकते हैं\timing , जो कि यदि आप .psqlrc पर समय निर्धारित करने में सक्षम होना चाहते हैं तो सहायक हो सकता है - आप तब \timing onस्पष्ट रूप से एक स्क्रिप्ट में सेट कर सकते हैं जहाँ सादा \timingअन्यथा टॉगल होगा। यह बंद


12

\timingयदि आप किसी दूरस्थ सर्वर से कनेक्ट कर रहे हैं तो उस समय भी नेटवर्क विलंबता शामिल है।

जब आप ऐसा नहीं चाहते हैं और क्वेरी आउटपुट की भी आवश्यकता नहीं है, तो बेहतर उपयोग EXPLAIN ANALYZE, जो प्लानर प्लान को प्लानर अनुमानों और वास्तविक निष्पादन समय के साथ आउटपुट करता है।

उदाहरण के लिए, EXPLAIN ANALYZE SELECT foo from bar ;


1
... एकमात्र मुद्दा यह है कि आप सामान्य क्वेरी आउटपुट प्राप्त नहीं करते हैं।
— dezso

2
explain analyzeपैदावार के समय का उपयोग करते हुए जो लगभग दोगुना है जो मैं उपयोग करता हूं \timing, जो कि नेटवर्क विलंबता के बारे में यहां टिप्पणियों के आधार पर मेरी अपेक्षा के विपरीत है। मुझे संदेह है कि उस सामान्य निष्पादन में ओवरहेड analyzeहै जो क्वेरी समय में जोड़ता है। डॉक्स के आधार पर, मुझे लगता है कि EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM barइससे आपको अधिक उपयोगी समय की जानकारी मिलेगी। देखें postgresql.org/docs/9.6/static/sql-explain.html जानकारी के लिए।
— लार्क्स 14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.