डेटाबेस अपने आप में कोई इतिहास है का उपयोग कर रहा है, तो आप psql उपयोग कर रहे हैं आप "\ s" का उपयोग वहाँ अपने आदेश इतिहास को देखने के लिए कर सकते हैं।
आप postgresql.conf फ़ाइल में log_statement सेट करके लॉग फ़ाइलों में भविष्य के प्रश्न या अन्य प्रकार के संचालन प्राप्त कर सकते हैं। इसके बजाय आप शायद log_min_duration_statement है, जो कि यदि आप इसे 0 पर सेट करते हैं तो लॉग में सभी प्रश्नों और उनकी अवधि लॉग इन करेंगे। एक बार आपके ऐप्स लाइव होने पर यह सहायक हो सकता है, यदि आप इसे उच्च मान पर सेट करते हैं तो आपको केवल लंबे समय तक चलने वाले प्रश्न दिखाई देंगे जो ऑप्टिमाइज़ेशन के लिए सहायक हो सकते हैं (आप उन प्रश्नों पर एक्सप्लिन विश्लेषण चला सकते हैं जिन्हें आप समझते हैं कि वे क्यों धीमा हो)।
इस क्षेत्र में जानना एक और आसान बात यह है कि यदि आप psql चलाते हैं और इसे "\ टाइमिंग" कहते हैं, तो यह दिखाएगा कि उसके बाद प्रत्येक कथन कितना समय लगेगा। तो अगर आप एक एसक्यूएल फ़ाइल है कि इस तरह दिखता है:
\timing
select 1;
आप इसे सही झंडे के साथ चलाने के लिए और प्रत्येक कथन कितना समय ले लिया साथ interleaved देख सकते हैं। यहां बताया गया है और क्या परिणाम की तरह दिखता है:
$ psql -ef test.sql
Timing is on.
select 1;
?column?
----------
1
(1 row)
Time: 1.196 ms
यह आसान है क्योंकि आप डेटाबेस सुपर उपयोगकर्ता इसका इस्तेमाल करने, कॉन्फ़िग फ़ाइल को बदलने के विपरीत होने की जरूरत नहीं है, और यह अगर आप नए विकसित कर रहे हैं उपयोग करने के लिए आसान है कोड और इसका परीक्षण करना चाहते हैं।
स्रोत
2009-10-06 04:37:04
मैंने टैग परिवर्तन को वापस ले लिया क्योंकि यह एक एसक्यूएल विशिष्ट प्रश्न नहीं है। –
देखें http://stackoverflow.com/questions/722221/how-to-log-postgres-sql-queries –