PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पीजीलॉजिकल प्रदर्शन पर

कुछ दिनों पहले हमने पोस्टग्रेएसक्यूएल के लिए एक पूरी तरह से ओपन-सोर्स लॉजिकल प्रतिकृति समाधान, पीजीलॉजिकल जारी किया था, जो उम्मीद है कि बहुत दूर भविष्य में पोस्टग्रेएसक्यूएल पेड़ में शामिल हो जाएगा। मैं तार्किक प्रतिकृति द्वारा सक्षम सभी चीजों के बारे में चर्चा नहीं करने जा रहा हूँ - pglogic रिलीज़ घोषणा काफी अच्छा अवलोकन प्रस्तुत करती है, और साइमन ने कुछ दिनों पहले एक अन्य पोस्ट में तार्किक प्रतिकृति के लाभों को भी संक्षेप में समझाया।

इसके बजाय मैं घोषणा में उल्लिखित एक विशेष पहलू के बारे में बात करना चाहता हूं - मौजूदा समाधानों के साथ प्रदर्शन की तुलना। pglogic पेज में उल्लेख है

बेंचमार्क

यह पोस्ट अधिकतम "टिकाऊ" थ्रूपुट (लेन-देन प्रति सेकंड) खोजने के लिए हमारे द्वारा किए गए बेंचमार्क के विवरण की व्याख्या करता है, प्रत्येक समाधान बिना अंतराल के संभाल सकता है। ऐसा करने के लिए मैंने ग्राहकों की अलग-अलग संख्या के साथ i2.4xlarge AWS इंस्टेंस की एक जोड़ी पर कई pgbench परीक्षण चलाए हैं, और मास्टर पर थ्रूपुट को मापने और इसे पकड़ने में कितना समय लगा (यदि यह पिछड़ रहा था) . इसके बाद परिणामों का उपयोग स्टैंडबाय नोड पर अधिकतम थ्रूपुट के अनुमान की गणना करने के लिए किया गया था।

उदाहरण के लिए मान लें कि हम 30 मिनट के लिए 16 क्लाइंट के साथ pgbench चला रहे हैं, और हमने मास्टर पर 10000 tps मापा है, लेकिन स्टैंडबाय पिछड़ रहा था और पकड़ने में 15 मिनट का समय लगा। तब अधिकतम टिकाऊ थ्रूपुट अनुमान है

tps =(लेन-देन निष्पादित) / (स्टैंडबाय पकड़े जाने तक कुल रनटाइम)

यानी

टीपीएस =(30 60 1.000) / (45 * 60) =18.000,000 / 2.700 =6.666

तो उस स्थिति में स्टैंडबाय पर अधिकतम टिकाऊ थ्रूपुट 6.666 टीपीएस है, यानी मास्टर पर मापी गई लेनदेन दर का केवल ~66%।

सिस्टम

बेंचमार्क i2.4xlarge AWS इंस्टेंस की एक जोड़ी पर किया गया था, एक ही प्लेसमेंट समूह में कॉन्फ़िगर किया गया था (इसलिए उनके बीच ~ 2Gbit नेटवर्क कनेक्शन के साथ), और 4x SSD ड्राइव RAID-0 में कॉन्फ़िगर किया गया था (इसलिए I/O एक होने की संभावना नहीं है यहाँ समस्या)। उदाहरणों में ~ 122GB RAM है, इसलिए डेटा सेट (पैमाने पर 5000 के साथ pgbench) RAM में फिट बैठता है। सभी परीक्षण PostgreSQL 9.5.0 पर बिल्कुल समान कॉन्फ़िगरेशन के साथ किए गए:

checkpoint_timeout = 15min
effective_io_concurrency = 32
maintenance_work_mem = 1GB
max_wal_size = 8GB
min_wal_size = 2GB
shared_buffers = 16GB

सभी प्रतिकृति प्रणालियों के लिए, नवीनतम उपलब्ध संस्करण का उपयोग किया गया था, विशेष रूप से

  • slony1 2.2.4
  • स्काईटूल 3.2

और ट्यूटोरियल में वर्णित के रूप में एक साधारण प्रतिकृति स्थापित की गई थी (दोनों बेंचमार्क के लिए उपयोग किए गए pgbench उदाहरण का उपयोग करते हैं)।

परिणाम

आगे प्रस्तुत परिणामों में स्ट्रीमिंग प्रतिकृति (एसिंक्रोनस मोड) भी शामिल है ताकि आपको तार्किक प्रतिकृति से जुड़े ओवरहेड का बेहतर विचार मिल सके। लेन-देन दरें pgbench द्वारा मापी गई "कच्ची" संख्याएं नहीं हैं, बल्कि इस पोस्ट की शुरुआत में प्रस्तुत किए गए सूत्र का उपयोग करके गणना की गई "टिकाऊ" दरें हैं।

ग्राहक स्ट्रीमिंग pgological बेवकूफ लोंडिस्टे
1 1075 1052 949 861
2 2118 2048 1806 1657
4 3894 3820 3456 1643
8 6506 6442 2040 1645
16 9570 8251 1535 1635
24 11388 7728 1548 1622
32 12384 7818 1358 1623

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दूसरी तालिका में संख्या के आधार पर एक तालिका में एकाधिक पंक्तियाँ सम्मिलित करें

  2. पूर्णांकों का विभाजन 0 . लौटाता है

  3. PostgreSQL में एक तालिका को संदर्भित करने वाले संग्रहीत कार्यों की सूची बनाएं

  4. IP श्रेणियों पर क्वेरी के लिए PostgreSQL अनुक्रमणिका का उपयोग नहीं किया गया

  5. Psql का उपयोग करके PostgreSQL में डेटाबेस और तालिकाओं को कैसे सूचीबद्ध करें