PostgreSQL और प्रदर्शन
सॉफ़्टवेयर आर्किटेक्चर डिज़ाइन में प्रदर्शन प्रमुख आवश्यकताओं में से एक है, और इसकी शुरुआत के बाद से PostgreSQL डेवलपर्स का फोकस रहा है, जिसे निम्नलिखित PostgreSQL Git स्रोतों में भी दिखाया गया है:
commit d31084e9d1118b25fd16580d9d8c2924b5740dff
Author: Marc G. Fournier <[email protected]>
Date: Tue Jul 9 06:22:35 1996 +0000
Postgres95 1.01 Distribution - Virgin Sources
[...]
diff --git a/src/backend/access/heap/stats.c b/src/backend/access/heap/stats.c
new file mode 100644
index 0000000000..d41d01ac1b
--- /dev/null
+++ b/src/backend/access/heap/stats.c
@@ -0,0 +1,329 @@
+/*-------------------------------------------------------------------------
+ *
+ * stats.c--
+ * heap access method debugging statistic collection routines
+ *
+ * Copyright (c) 1994, Regents of the University of California
[...]
+ * Also note that this routine probably shouldn't have to exist, and does
+ * screw up the call graph rather badly, but we are wasting so much time and
+ * system resources being massively general that we are losing badly in our
+ * performance benchmarks.
+ */
PostgreSQL विभिन्न सुविधाओं को लागू करके प्रदर्शन प्राप्त करता है:
- कई अनुक्रमणिका प्रकार
- क्वेरी प्लानर और ऑप्टिमाइज़र जो मल्टीप्रोसेसर सिस्टम का लाभ उठा सकते हैं
- एमवीसीसी
- तालिका विभाजन
पर्यावरण चयन
आज उपलब्ध कई विकल्पों के साथ कई प्रश्न आते हैं:
- आधार पर, या बादल में?
- नंगे धातु या वर्चुअलाइज्ड?
- ब्रांडेड हार्डवेयर या अपना खुद का निर्माण?
- PostgreSQL निम्न स्तर के कार्य या fsync हार्डवेयर प्रदर्शन को कैसे प्रभावित करते हैं?
- स्थानीय डिस्क या साझा संग्रहण?
- कौन से ऑपरेटिंग सिस्टम ट्यूनेबल को सेट करने की आवश्यकता है?
फिर से, PostgreSQL विकी सभी चीजों के प्रदर्शन के लिए एक बहुत अच्छा प्रारंभिक बिंदु है।
देखने के लिए मुख्य चीजें क्या हैं?
चूँकि पोस्टग्रेएसक्यूएल प्रदर्शन ट्यूनिंग और सिस्टम डिज़ाइन (संकेत:एक्सएफएस के लिए पृष्ठ खोजें) के विभिन्न पहलुओं को छूने वाले बहुत सारे साहित्य हैं, इसलिए यह ब्लॉग पहले से चर्चा किए गए विषयों में से किसी एक में गहरा गोता लगाने के लिए नहीं है, बल्कि एक जब मुख्य फोकस संसाधन विवाद से बचना है, तो कहां से शुरू करें, इस पर sysadmin का दृष्टिकोण। मैं कई संदर्भों को भी इंगित करूंगा जो विशिष्ट मुद्दों को अधिक विस्तार से संबोधित करते हैं। पोस्टग्रेएसक्यूएल के प्रदर्शन के लिए महत्वपूर्ण सभी क्षेत्रों में विशेषज्ञ सलाह पेशेवर सेवाओं की पेशकश करने वाली कई कंपनियों के माध्यम से उपलब्ध है।
चलिए शुरू करते हैं!
सूचना एकत्र करना
एक डिफ़ॉल्ट स्थापना मानते हुए, और यह जानते हुए कि PostgreSQL बॉक्स से बाहर निकलने की कोशिश नहीं करता है और कुछ विचित्रताएं भी हो सकती हैं, इस चरण में आवश्यक निगरानी उपकरण स्थापित करना शामिल है।
एप्लिकेशन को समझने और प्रभावित संसाधनों को जल्दी से ट्रैक करने में सक्षम होने के लिए अच्छी निगरानी महत्वपूर्ण है, और यह क्लाउड प्रदाताओं के लिए विशेष रूप से सच है जहां सीपीयू या आई/ओ के लिए बेंचमार्क चलाने के लिए डेटाबेस होस्ट तक पहुंच उपलब्ध नहीं हो सकती है:पी> Fig.1 — स्लाइडशेयर, जिग्नेश शाह, क्लाउड में प्रबंधित पोस्टग्रेएसक्यूएल के साथ सर्वोत्तम अभ्यास
सिस्टम प्रदर्शन अलर्ट पर प्रतिक्रिया करना
मॉनिटरिंग टूल सिस्टम प्रदर्शन संकेतकों पर ग्राफ़ और अलर्ट करेंगे:
सीपीयू:
- चेतावनी - उच्च उपयोग लंबे समय तक चलने वाली क्वेरी को इंगित करता है।
- प्रभाव — आवेदन प्रतिक्रिया समय।
- कार्रवाई — ट्यूनिंग की आवश्यकता वाले प्रश्नों की पहचान करने के लिए डेटाबेस सांख्यिकी मीट्रिक मीट्रिक की समीक्षा करें।
मैं/ओ:
- अलर्ट - उच्च संख्या या पढ़ता है।
- प्रभाव — आवेदन प्रतिक्रिया समय।
- कार्रवाई — एक और पढ़ी गई प्रतिकृति जोड़ें। लंबे समय से चल रही क्वेरी की पहचान करने के लिए डेटाबेस सांख्यिकी मेट्रिक्स की समीक्षा करें।
- चेतावनी - लिखने की उच्च संख्या।
- प्रभाव — आवेदन प्रतिक्रिया समय।
- कार्रवाई — GUC पैरामीटर साझा_बफ़र्स, वर्क_मेम और रखरखाव_वर्क_मेम ट्यून करें। चेकपॉइंटर को ट्यून करें और सुनिश्चित करें कि ऑटोवैक्यूम सही ढंग से ट्यून किया गया है। यदि PostgreSQL अपने हार्डवेयर पर स्थापित है तो टेबलस्पेस को कॉन्फ़िगर करें और/या शार्डिंग पर विचार करें लेकिन शार्डिंग चेतावनियों को समझें।
मेमोरी:
- चेतावनी — उच्च स्मृति उपयोग।
- प्रभाव — I/O प्रदर्शन.
- कार्रवाई — ट्यूनिंग की आवश्यकता वाले प्रश्नों की पहचान करने के लिए डेटाबेस सांख्यिकी मीट्रिक मीट्रिक की समीक्षा करें।
नेटवर्क:
- चेतावनी — उच्च विलंबता। आमतौर पर यह एक डीबीएएएस मुद्दा है।
- प्रभाव — ग्राहक, प्रतिकृति.
- कार्रवाई — डेटाबेस होस्ट को फ़्रंटएंड सर्वर के करीब स्थानांतरित करें।
- अलर्ट — उच्च संख्या में कनेक्शन।
- प्रभाव — ग्राहक।
- कार्रवाई — कनेक्शन पोलिंग का उपयोग करने पर विचार करें।
डेटाबेस आंतरिक प्रदर्शन संकेतक
pg_* दृश्य डेटाबेस इंजन प्रदर्शन के लिए विंडो हैं, और PostgreSQL प्रबंधन अनुप्रयोगों को विभिन्न SQL प्रश्नों के माध्यम से अन्यथा उपलब्ध जानकारी के धन को सहसंबंधित करने में सहायता के लिए लिखा गया है। अतिरिक्त एक्सटेंशन मौजूद हैं और वे अक्सर एकीकृत या प्लग इन के रूप में उपलब्ध होते हैं।
ऐसे उपकरणों का उपयोग करना डीबीए कार्य को सरल करता है और यह सुनिश्चित करता है कि डेटाबेस क्लस्टर को स्थापित और कॉन्फ़िगर करते समय सर्वोत्तम प्रथाओं का पालन किया जाता है।
डेटाबेस सांख्यिकी
ClusterControl जैसे मॉनिटरिंग टूल प्रदर्शन ट्यूनिंग के साथ DBA की सहायता के लिए डेटाबेस गतिविधि आंकड़ों का उपयोग करते हैं:
Fig.2 — कईनाइन, पोस्टग्रेएसक्यूएल में मॉनिटर करने के लिए मुख्य चीजें — अपने वर्कलोड का विश्लेषण आज व्हाइटपेपरडाउनलोड करें पोस्टग्रेएसक्यूएल मैनेजमेंट एंड ऑटोमेशन ClusterControl के साथ PostgreSQL को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानना चाहिए, इसके बारे में जानें श्वेतपत्र डाउनलोड करेंक्वेरी ट्यूनिंग
संस्करण 9.5 से शुरू होकर PostgreSQL में BRIN अनुक्रमणिका और समानांतर क्वेरी जैसे महत्वपूर्ण क्वेरी प्रदर्शन सुधार शामिल हैं:
Fig.3 - दूसरा क्वाड्रंट, थॉमस वोंद्रा, PostgreSQL 9.5 (और उससे आगे) में प्रदर्शन सुधारलॉक करना
Concurrency Control PostgreSQL दस्तावेज़ीकरण में एक संपूर्ण अध्याय समर्पित है। लॉक की संख्या या लॉक अवधि सीमा से अधिक होने पर सतर्क रहने के लिए निगरानी टूल का उपयोग करें और लापता इंडेक्स की तलाश करके, एप्लिकेशन कोड की समीक्षा करके या कनेक्शन पोलिंग पर स्विच करके समस्या का समाधान करें।
बल्क लोड
तुल्यकालिक_कमिट को बड़े डेटा आयात के दौरान बंद किया जा सकता है। पोस्टग्रेएसक्यूएल दस्तावेज़ीकरण अनुभाग में अधिक विकल्पों पर चर्चा की गई है जो एक डेटाबेस को पॉप्युलेट कर रहा है।
निष्कर्ष
PostgreSQL प्रदर्शन ट्यूनिंग एक जटिल कार्य है। जटिलता उपलब्ध कराए गए कई ट्यूनेबल से आती है, जो PostgreSQL के पक्ष में एक मजबूत तर्क है। प्रदर्शन के मुद्दों को हल करने के लिए कोई चांदी की गोली नहीं है, बल्कि यह एप्लिकेशन की विशिष्टता है जो अंततः ट्यूनिंग आवश्यकताओं को निर्धारित करती है। इसलिए निगरानी उपकरण सिस्टम प्रदर्शन के सापेक्ष प्रदर्शन अंतर्दृष्टि प्राप्त करने में सहायता कर सकते हैं और आगे PostgreSQL विशिष्ट क्षेत्रों की पहचान करने की अनुमति देते हैं जिन्हें ट्यूनिंग की आवश्यकता होती है और साथ ही साथ SQL क्वेरी जिन्हें अनुकूलन की आवश्यकता होती है। इसके अतिरिक्त डेटाबेस प्रबंधन प्रणाली यह सुनिश्चित करने के लिए कि सर्वोत्तम प्रथाओं का पालन किया जाता है, PostgreSQL के सेटअप और प्रशासन में सहायता कर सकती है।