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

pgFincore 1.2, एक PostgreSQL एक्सटेंशन

pgFincore 1.2 ऑपरेटिंग सिस्टम के डेटापेज कैश के ऑडिट और हेरफेर के लिए एक PostgreSQL एक्सटेंशन है। उत्पादन की जरूरतों के अनुरूप विकास के साथ विस्तार का पहले से ही 7 साल के उपयोग का इतिहास है।

यहाँ नवीनतम संस्करण 1.2 डाउनलोड करें, जो PostgreSQL 9.6 के साथ संगत है।

डेटा संचय

डेटा पेज कैशिंग एक ऐसा ऑपरेशन है जो डेटा प्रबंधन में कई स्तरों पर "स्वाभाविक रूप से" होता है। वस्तु सरल है:डिस्क पर भौतिक रूप से रिकॉर्ड किए गए डेटा और उपयोगकर्ता को पुनर्स्थापन के बीच कई परतें आरोपित की जाती हैं। वर्तमान में लगभग हर डेटा स्तर में पढ़ने और लिखने के आदेशों को तेज़ी से पूरा करने के लिए एक अमूर्तता है। इस प्रकार अधिकांश हार्ड ड्राइव एक राइट कैश की पेशकश करते हैं, जो भौतिक लेखन में देरी करता है, और एक रीड कैश जो आपको भविष्य के अनुरोधों का अनुमान लगाने और डेटा को अधिक तेज़ी से प्रदान करने की अनुमति देता है। SAN, RAID कार्ड, ऑपरेटिंग सिस्टम, सॉफ्टवेयर आदि में एक समान प्रणाली मौजूद है।

PostgreSQL के पास निश्चित रूप से लिखने और पढ़ने के लिए अपनी प्रबंधन प्रणाली है, साझा बफ़र्स , जिसे pg_buffercache एक्सटेंशन के साथ ऑडिट किया जा सकता है।

सिस्टम टूल्स और pgFincore . के साथ ऑपरेटिंग सिस्टम के कैशे का ऑडिट करना संभव है इसे PostgreSQL में पोर्ट करें।

आगे पढ़ें

अधिकांश ऑपरेटिंग सिस्टम रीड-आगे विंडो प्रदान करके डेटा पथ को अनुकूलित करते हैं, इससे डेटा को प्री-लोड करने की अनुमति मिलती है कैश और इस प्रकार अनुप्रयोगों को इसे और अधिक तेज़ी से प्रदान करता है। PostgreSQL में सिस्टम स्तर पर इस व्यवहार का समर्थन करने के लिए कई अनुकूलन शामिल हैं, और प्रभावी_io_concurrency विकल्प के साथ समान कार्यक्षमता भी रखता है।

इन अनुकूलन को सुविधाजनक बनाने का एक समाधान POSIX_FADVISE सिस्टम कॉल का उपयोग करना है। फिर से pgFincore इस समाधान को PostgreSQL में पोर्ट करें।

pgFincore 1.2

इसलिए यह एक्सटेंशन अनुमति देता है:

  • POSIX (linux, BSD,…) का समर्थन करने वाले सिस्टम के कैश में तालिका या अनुक्रमणिका (और PostgreSQL द्वारा उपयोग की जाने वाली कुछ अन्य फ़ाइलें) पर सटीक जानकारी प्राप्त करने के लिए,
  • इस कैश में हेरफेर करने के लिए:इसका एक नक्शा बनाएं और इसे बाद में या किसी अन्य सर्वर पर पुनर्स्थापित करें,
  • posix_fadvise कॉल के माध्यम से पथ अनुकूलित करने के लिए।

pgFincore प्राप्त करें

वितरण में उपलब्ध डेबियन और रेड हैट पैकेज, और एपीटी पीजीडीजी और आरपीएम पीजीडीजी रिपॉजिटरी पर पोस्टग्रेएसक्यूएल के प्रत्येक संस्करण के लिए।

और pgfincore git रिपॉजिटरी पर स्रोत।

सहायता चाहिए?

सामुदायिक समर्थन के अतिरिक्त, आप द्वितीय चतुर्थांश से संपर्क कर सकते हैं।

उपयोग के उदाहरण

सेटअप

$ sudo apt-get install postgresql-9.6-pgfincore
$ psql -c 'CREATE EXTENSION pgfincore;'

सिस्टम जानकारी

# select * from pgsysconf_pretty();
 os_page_size | os_pages_free | os_total_pages 
--------------+---------------+----------------
 4096 bytes   | 314 MB        | 16 GB

रैंडम वॉक को ऑप्टिमाइज़ करें (रीड-फ़ॉरवर्ड विंडो कम करें)

# select * from pgfadvise_random('pgbench_accounts_pkey');
          relpath | os_page_size | rel_os_pages | os_pages_free 
------------------+--------------+--------------+---------------
 base/16385/24980 | 4096         | 2            | 1853808

अनुक्रमिक ट्रैवर्सल को ऑप्टिमाइज़ करें (रीड-फ़ॉरवर्ड विंडो में वृद्धि)

# select * from pgfadvise_sequential('pgbench_accounts');
 relpath          | os_page_size | rel_os_pages | os_pages_free 
------------------+--------------+--------------+---------------
 base/16385/25676 | 4096         | 3176         | 1829288

कैश ऑडिट

# select * from pgfincore('pgbench_accounts');
      relpath       | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit 
--------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
 base/11874/16447   |       0 |         4096 |       262144 |         3 |         1 |        408444 | 
 base/11874/16447.1 |       1 |         4096 |        65726 |         0 |         0 |        408444 | 

मेमोरी में टेबल लोड करें

# select * from pgfadvise_willneed('pgbench_accounts');
      relpath       | os_page_size | rel_os_pages | os_pages_free 
--------------------+--------------+--------------+---------------
 base/11874/16447   |         4096 |       262144 |         80650
 base/11874/16447.1 |         4096 |        65726 |         80650

तालिका का संचय साफ़ करें

# select * from pgfadvise_dontneed('pgbench_accounts');
      relpath       | os_page_size | rel_os_pages | os_pages_free
--------------------+--------------+--------------+---------------
 base/11874/16447   |         4096 |       262144 |        342071
 base/11874/16447.1 |         4096 |        65726 |        408103

संचित पृष्ठों को पुनर्स्थापित करें

यहां हम स्मृति से लोड और अनलोड करने के लिए पृष्ठों का प्रतिनिधित्व करने वाले बिट-स्ट्रिंग प्रकार पैरामीटर का उपयोग करते हैं।

# select * 
  from pgfadvise_loader('pgbench_accounts', 0, true, true, 
                       B'101001'); -- Varbit décrivant les pages à manipuler
     relpath      | os_page_size | os_pages_free | pages_loaded | pages_unloaded 
------------------+--------------+---------------+--------------+----------------
 base/11874/16447 |         4096 |        408376 |            3 |              3

नोट:डेमो के लिए, ऊपर केवल 6 डेटा पेज हैंडल किए जाते हैं, 1 पेज लोड करता है, 0 पेज को अनलोड करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज में ग्रुप बाय - JSON डेटा प्रकार के लिए कोई समानता नहीं है?

  2. PostgreSQL में EXCEPT क्लॉज का उपयोग करना

  3. समय क्षेत्र समानता के साथ समय को पोस्टग्रेज करता है

  4. Oracle से PostgreSQL:ANSI बाहरी PostgreSQL में सिंटैक्स में शामिल हों

  5. PostgreSQL डेटाबेस की तैनाती को स्वचालित कैसे करें