मैंने वार्षिक यूरोपीय पोस्टगेएसक्यूएल सम्मेलन में भाग लेने के लिए शानदार शहर लिस्बन में एक सप्ताह बिताया। यह पहले यूरोपीय पोस्टग्रेएसक्यूएल सम्मेलन और मेरी छठी बार भाग लेने के बाद से 10वीं वर्षगांठ है।
पहली छापें
शहर बहुत अच्छा था, माहौल बहुत अच्छा था और ऐसा लग रहा था कि यह बुद्धिमान और मैत्रीपूर्ण लोगों के साथ दिलचस्प बातचीत से भरा एक बहुत ही उत्पादक और सूचनात्मक सप्ताह होगा। तो मूल रूप से लिस्बन में मैंने जो सबसे पहली अच्छी बात सीखी वह यह है कि लिस्बन और पुर्तगाल कितने महान हैं, लेकिन मुझे लगता है कि आप बाकी की कहानी के लिए यहां आए हैं!
साझा बफ़र
हमने प्रशिक्षण सत्र "दिन-प्रति-दिन संचालन के लिए पोस्टग्रेएसक्यूएल डीबीए टूलबेल्ट" में भाग लिया
द्वारा कारेल मोपेल (साइबरटेक) . एक बात जो मैंने नोट की वह थी शेयर्ड_बफ़र्स की सेटिंग। चूँकि Shared_buffers वास्तव में सिस्टम के कैशे का मुकाबला या पूरक करता है, इसलिए इसे उपलब्ध कुल RAM के 25% और 75% के बीच किसी भी मान पर सेट नहीं किया जाना चाहिए। इसलिए, सामान्य तौर पर, सामान्य वर्कलोड के लिए अनुशंसित सेटिंग RAM का 25% है, इसे विशेष मामलों के लिए>=75% पर सेट किया जा सकता है, लेकिन बीच में नहीं।
अन्य बातें जो हमने इस सत्र में सीखीं:
- दुर्भाग्य से आसान ऑनलाइन (या ऑफ़लाइन) सक्रियण/डेटा-चेकसम को सक्षम करना अभी 11 में नहीं है (initdb/लॉजिकल प्रतिकृति ही एकमात्र विकल्प है)
- vm.overcommit_memory से सावधान रहें, आप इसे 2 पर सेट करके बेहतर तरीके से अक्षम कर सकते हैं। vm.overcommit_ratio को लगभग 80 पर सेट करें।
उन्नत तार्किक प्रतिकृति
पेट्र जेलिनेक (द्वितीय चतुर्थांश) . की चर्चा में , तार्किक प्रतिकृति के मूल लेखक, हमने इस नई रोमांचक तकनीक के अधिक उन्नत उपयोगों के बारे में सीखा:
- केंद्रीकृत डेटा संग्रह:हमारे पास कई प्रकाशक हो सकते हैं और फिर उन प्रकाशकों में से प्रत्येक के लिए एक ग्राहक के साथ एक केंद्रीय प्रणाली हो सकती है, जो एक केंद्रीय प्रणाली में विभिन्न स्रोतों से डेटा उपलब्ध कराती है। (सामान्य उपयोग:OLAP)
- साझा वैश्विक डेटा या दूसरे शब्दों में वैश्विक डेटा और मापदंडों (जैसे मुद्राएं, स्टॉक, बाजार/वस्तु मूल्य, मौसम, आदि) को बनाए रखने के लिए एक केंद्रीय प्रणाली जो एक या अधिक ग्राहकों को प्रकाशित करती है। फिर ये डेटा केवल एक सिस्टम में बनाए रखा जाता है लेकिन सभी ग्राहकों में उपलब्ध होता है।
- तार्किक प्रतिकृति अतुल्यकालिक हो सकती है लेकिन समकालिक भी हो सकती है (प्रतिबद्धता की गारंटी)
- तार्किक डिकोडिंग के साथ नई संभावनाएं:
- लॉजिकल डिकोडिंग प्लगइन्स के माध्यम से डेबेज़ियम/काफ्का के साथ एकीकरण
- wal2json प्लगइन
- द्वि-दिशात्मक प्रतिकृति
- करीब से शून्य डाउनटाइम अपग्रेड:
- नए सर्वर पर तार्किक प्रतिकृति सेटअप करें (संभवतः डेटा-चेकसम सक्षम करने के साथ initdb)
- लैग अपेक्षाकृत छोटा होने तक प्रतीक्षा करें
- pgbouncer से डेटाबेस को रोकें
- अंतराल शून्य होने तक प्रतीक्षा करें
- नए सर्वर को इंगित करने के लिए pgbouncer कॉन्फ़िगरेशन बदलें, pgbouncer का कॉन्फिडेंस पुनः लोड करें
- pgbouncer से डेटाबेस को फिर से शुरू करें
PostgreSQL 11 में नया क्या है
इस रोमांचक प्रस्तुति में, मैग्नस हैगेंडर (रेडपिल लिनप्रो एबी) हमें PostgreSQL 11 के चमत्कारों से परिचित कराया:
- pg_stat_statements 64-बिट की क्वेरी आईडी का समर्थन करता है।
- pg_prewarm (सिस्टम के कैशे या साझा बफ़र्स को गर्म करने की एक विधि):नए कॉन्फ़िगरेशन पैरामीटर जोड़ना
- नई डिफ़ॉल्ट भूमिकाएं पोस्टग्रेज से दूर जाना आसान बनाती हैं (जिस उपयोगकर्ता से मेरा मतलब है :))
- xactional नियंत्रण के साथ संग्रहीत कार्यविधियाँ
- उन्नत पूर्ण पाठ खोज
- तार्किक प्रतिकृति TRUNCATE का समर्थन करती है
- आधार बैकअप (pg_basebackup) चेकसम की पुष्टि करता है
- प्रश्नों के समानांतरीकरण में कई सुधार
- 10 की तुलना में अधिक परिष्कृत विभाजन
- डिफ़ॉल्ट विभाजन
- विभाजनों में अद्यतन (पंक्ति को एक विभाजन से दूसरे विभाजन में ले जाता है)
- स्थानीय विभाजन अनुक्रमणिका
- सभी विभाजनों में अद्वितीय कुंजी (अभी तक संदर्भ योग्य नहीं है)
- हैश विभाजन
- विभाजन-वार जुड़ाव
- विभाजन-वार समुच्चय
- विभाजन विभिन्न विदेशी सर्वरों में विदेशी टेबल हो सकते हैं। इससे महीन दाने वाली शार्डिंग की अपार संभावनाएं खुलती हैं।
- JIT संकलन
zheap:पोस्टग्रेएसक्यूएल ब्लोट की समस्याओं का जवाब
यह अभी भी 11 में नहीं है, लेकिन यह इतना आशाजनक लगता है कि मुझे इसे अच्छी चीजों की सूची में शामिल करना पड़ा। प्रस्तुति अमित कपिला (EnterpriseDB) . द्वारा दी गई थी इस नई तकनीक के मुख्य लेखकों में से एक, जिसका उद्देश्य अंततः वैकल्पिक प्रकार के ढेर के रूप में PostgreSQL कोर में एकीकृत होना है। इसे पोस्टग्रेएसक्यूएल में नए प्लगेबल स्टोरेज एपीआई के साथ एकीकृत किया जाएगा, जो कई टेबल एक्सेस मेथड्स (उसी तरह से मेरे पहले ब्लॉग में कवर किए गए विभिन्न [इंडेक्स] एक्सेस मेथड्स) को सपोर्ट करने वाला है।
यह PostgreSQL की पुरानी कमियों को हल करने का प्रयास करेगा:
- टेबल ब्लोट
- निर्वात (स्वतः) करने की आवश्यकता है
- संभावित रूप से एक लेन-देन-आईडी रैपराउंड
वे सभी औसत माध्यम से बड़े व्यवसाय के लिए कोई मुद्दा नहीं हैं (हालांकि यह अत्यधिक सापेक्ष है), हम बैंकों और अन्य वित्तीय संस्थानों को जानते हैं जो दसियों टीबी डेटा के पोस्टग्रेएसक्यूएल और कई 1000 लेनदेन/सेकंड बिना मुद्दों के चलाते हैं। टेबल ब्लोट को ऑटोवैक्यूम द्वारा नियंत्रित किया जाता है और रो फ्रीज लेनदेन-आईडी रैपराउंड की समस्या को हल करता है, लेकिन फिर भी यह रखरखाव मुक्त नहीं है। PostgreSQL समुदाय वास्तव में रखरखाव-मुक्त डेटाबेस की दिशा में काम करता है, इसलिए ज़ीप आर्किटेक्चर प्रस्तावित है। यह लाएगा:
- एक नया UNDO लॉग
- यूएनडीओ लॉग पुराने संस्करणों को देखकर डेटा को पुराने लेनदेन के लिए दृश्यमान बना देगा
- उन्नत लेनदेन के प्रभावों को उलटने के लिए UNDO का उपयोग किया जाएगा
- बदलाव जगह-जगह होते हैं। पुराने संस्करण अब डेटा फ़ाइलों में नहीं रखे जाते हैं।
उच्च-स्तरीय लक्ष्य:
- बेहतर ब्लोट नियंत्रण
- कम लिखते हैं
- छोटे टपल हेडर
यह इस संबंध में PostgreSQL को MySql और Oracle के बराबर लाएगा।
PostgreSQL में समानांतर क्वेरी:इसका उपयोग कैसे नहीं करें (गलत)?
अमित कपिला और राफिया सबिह (एंटरप्राइजडीबी) की इस प्रस्तुति में हमने समानांतरीकरण के आंतरिक अंशों को सीखा और सामान्य गलतियों से बचने के लिए टिप्स के साथ-साथ कुछ अनुशंसित जीयूसी सेटिंग्स:
- समानांतरवाद केवल बी-ट्री इंडेक्स का समर्थन करता है
- max_parallel_workers_per_gather 1→ 4 पर सेट (उपलब्ध कोर के आधार पर)
- निम्न सेटिंग्स पर ध्यान दें:
- parallel_tuple_cost:एक टपल को समानांतर कार्यकर्ता प्रक्रिया से दूसरी प्रक्रिया में स्थानांतरित करने की लागत
- parallel_setup_cost:समानांतर वर्कर्स को लॉन्च करने और डायनामिक शेयर्ड मेमोरी को इनिशियलाइज़ करने की लागत
- min_parallel_table_scan_size:समानांतर अनुक्रम स्कैन के लिए विचार किए जाने वाले संबंधों का न्यूनतम आकार
- min_parallel_index_scan_size:समानांतर स्कैन के लिए विचार किए जाने वाले इंडेक्स का न्यूनतम आकार
- random_page_cost:डिस्क में एक यादृच्छिक पृष्ठ तक पहुंचने की अनुमानित लागत