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

PostgreSQL 9.4 में सुधार के कुछ क्षेत्र

PostgreSQL 9.4 के बीटा रिलीज़ के साथ, DBA को कुछ शानदार सुविधाएँ दी गई हैं जैसे pg_prewarm, JSONB, ALTER SYSTEM, प्रतिकृति स्लॉट और बहुत कुछ। इस संस्करण में प्रस्तुत कई वास्तुशिल्प स्तर की विशेषताओं में से, इसी तरह कुछ अन्य मामूली संवर्द्धन भी हैं जिन्हें मैंने इस ब्लॉग में शामिल करने का प्रयास किया है।

<ब्लॉकक्वॉट>

pg_stat_activity व्यू में लेन-देन आईडी जानकारी को ट्रैक करने के लिए दो नए कॉलम (बैकएंड_एक्सआईडी/बैकएंड_मिन) शामिल थे। pg_stat_activity.backend_xid कॉलम शीर्ष-स्तरीय लेनदेन की आईडी को कवर करता है जिसे वर्तमान में निष्पादित किया जाता है और pg_stat_activity.backend_xmin कॉलम न्यूनतम चल रहे XID की जानकारी को कवर करता है। दो अलग-अलग स्थितियों में निष्पादित दो क्वेरी आउटपुट के नीचे देखें, पहला एक ही पंक्ति पर लॉक (टेबल/पंक्ति) प्राप्त करने की कोशिश कर रहे सत्रों के बैकएंड_एक्समिन कॉलम में लेनदेन आईडी की पदानुक्रमित जानकारी दिखाता है, जबकि अन्य केवल एक स्वतंत्र लेनदेन बिना परेशान किए हो रहा है एक ही पंक्ति। इस तरह की जानकारी उपयोगकर्ता को डेटाबेस में मिलने वाली प्रतीक्षा के दौरान लेनदेन के बारे में अधिक जानने में मदद करती है।

postgres=# select pid,backend_xid,backend_xmin,query from pg_stat_activity where pid<>pg_backend_pid();
pid | backend_xid | backend_xmin | query
-------+-------------+--------------+---------------------------
22351 | 1905 | 1904 | insert into a values (1);
785 | 1904 | | insert into a values (1);
12796 | | 1904 | truncate a;
12905 | | 1904 | delete from a ;

postgres=# select pid,backend_xid,backend_xmin,query from pg_stat_activity where pid<>pg_backend_pid();
pid | backend_xid | backend_xmin | query
-------+-------------+--------------+-----------------------------
22351 | | | insert into foo values (1);
785 | 1900 | | insert into foo values (1);
(2 rows)
<ब्लॉकक्वॉट>

CREATE TABLESPACE/ALTER TABLESPACE में क्रमशः "साथ" और "स्थानांतरित" विकल्पों के रूप में नए खंड। इसी तरह, "with" विकल्प का उपयोग करके किसी विशेष TABLESPACE के लिए निर्धारित मापदंडों के बारे में विस्तृत जानकारी देने के लिए मेटा कमांड db+।

postgres=# h create tablespace
Command: CREATE TABLESPACE
Description: define a new tablespace
Syntax:
CREATE TABLESPACE tablespace_name
[ OWNER user_name ]
LOCATION 'directory'
[ WITH ( tablespace_option = value [, ... ] ) ]

Example:

postgres=# create tablespace t1 location '/usr/local/pgpatch/pg/ts' with (seq_page_cost=1,random_page_cost=3);
CREATE TABLESPACE

postgres=# db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Description
------------+----------+--------------------------+-------------------+--------------------------------------+-------------
pg_default | postgres | | | |
pg_global | postgres | | | |
t1 | postgres | /usr/local/pgpatch/pg/ts | | {seq_page_cost=1,random_page_cost=3} |
(3 rows)
<ब्लॉकक्वॉट>

नई प्रणाली प्रकार regclass, regproc, regprocedure, regoper, regoperator और regtype प्रकार के बारे में जानकारी देने के लिए कार्य करती है। सभी प्रकार के लिए, नए कार्य हैं to_regclass(), to_regproc(), to_regprocedure(), to_regoper(), to_regoperator() और to_regtype()।

Example:
select to_regclass('pg_catalog.pg_class'),to_regtype('pg_catalog.int4'),to_regprocedure('pg_catalog.abs(numeric)'),to_regproc('pg_catalog.now'),to_regoper('pg_catalog.||/');
to_regclass | to_regtype | to_regprocedure | to_regproc | to_regoper
-------------+------------+-----------------+------------+------------
pg_class | integer | abs(numeric) | now | ||/
(1 row)
<ब्लॉकक्वॉट>

भूमिका सदस्यता निर्दिष्ट करने के लिए कमांड लाइन उपयोगिता CREATEUSER में नया "-g" विकल्प।

-bash-4.1$ createuser -g rw -p 10407 r1 
-bash-4.1$ psql -p 10407
psql (9.4beta1) Type "help" for help.

postgres=# dg
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
r1 | | {rw}
<ब्लॉकक्वॉट>

pg_stat_all_tables दृश्य, में एक नया कॉलम "n_mod_since_analyze" है, जो तालिका के अंतिम विश्लेषण के बाद से पंक्तियों की संख्या पर प्रकाश डाला गया है। नीचे "n_mod_since_analyze" कॉलम परिवर्तनों के बारे में संक्षिप्त जानकारी दी गई है, पहली बार मैन्युअल विश्लेषण निष्पादित किया गया है और कुछ समय बाद ऑटोवैक्यूम को टेबल पर लागू किया गया है, इस अवधि में हम यह पता लगा सकते हैं कि विभिन्न कैटलॉग अपडेट कॉल के साथ कितनी पंक्तियां प्रभावित हुईं।

postgres=# analyze a;
ANALYZE
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 0
(1 row)

postgres=# insert into a values(generate_series(1,100));
INSERT 0 100
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 100
(1 row)

postgres=# truncate a;
TRUNCATE TABLE
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 100
(1 row)

postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+-------------------------------+-------------------------------+---------------------
a | 2014-05-03 02:14:21.806912-07 | 2014-05-03 02:09:51.002006-07 | 0
(1 row)
<ब्लॉकक्वॉट>

pg_stat_archiver, यह एक नया दृश्य है जो उत्पन्न सभी WAL को ट्रैक करने के लिए पेश किया गया है और यह विफल WAL की गिनती को भी कैप्चर करता है। यदि आप Oracle से हैं तो यह "आर्काइव लॉग लिस्ट" जैसा है।

postgres=# select * from pg_stat_archiver ;
-[ RECORD 1 ]------+------------------------------
archived_count | 167
last_archived_wal | 00000001000000000000009B
last_archived_time | 2014-05-02 20:42:36.230998-07
failed_count | 75
last_failed_wal | 000000010000000000000012
last_failed_time | 2014-05-01 12:09:57.087644-07
stats_reset | 2014-04-30 19:02:01.288521-07
<ब्लॉकक्वॉट>

pg_stat_statements, एक्सटेंशन मॉड्यूल में आंतरिक हैश कोड को ट्रैक करने के लिए एक नया कॉलम क्वेरी आईडी है, जिसकी गणना स्टेटमेंट के पार्स ट्री से की जाती है।

postgres=# select queryid,query from pg_stat_statements;
queryid | query
------------+------------------------------------
1144716789 | select * from pg_stat_statements ;
(1 row)

धन्यवाद।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Homebrew का उपयोग करके मैक पर Postgresql के साथ PHP स्थापित करें

  2. sqlalchemy के साथ प्रति-अनुरोध के आधार पर डेटाबेस इंजन को गतिशील रूप से कैसे बांधें

  3. पूर्ण पाठ खोज के साथ उपसर्ग में समाप्त होने वाले वाक्यांश का मिलान करें

  4. PL/pgSQL जाँच कर रहा है कि क्या कोई पंक्ति मौजूद है

  5. PostgreSQL 13 का अवलोकन libpq sslpassword कनेक्शन पैरामीटर