ืžื”ื“ื•ืจืช PostgreSQL 12 DBMS

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื— ื™ืฆื ืœืื•ืจ ืกื ื™ืฃ ื™ืฆื™ื‘ ื—ื“ืฉ ืฉืœ DBMS PostgreSQL 12. ืขื“ื›ื•ื ื™ื ืœืกื ื™ืฃ ื”ื—ื“ืฉ ื™ื™ืฆื ืœืžืฉืš ื—ืžืฉ ืฉื ื™ื ืขื“ ื ื•ื‘ืžื‘ืจ 2024.

ื”ืขื™ืงืจื™ ื—ื™ื“ื•ืฉื™ื:

  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ "ืขืžื•ื“ื•ืช ืฉื ื•ืฆืจื•", ืฉืขืจื›ื• ืžื—ื•ืฉื‘ ืขืœ ืกืžืš ื‘ื™ื˜ื•ื™ ื”ืžื›ืกื” ืืช ื”ืขืจื›ื™ื ืฉืœ ืขืžื•ื“ื•ืช ืื—ืจื•ืช ื‘ืื•ืชื” ื˜ื‘ืœื” (ื‘ื“ื•ืžื” ืœืชืฆื•ื’ื•ืช, ืืš ืขื‘ื•ืจ ืขืžื•ื“ื•ืช ื‘ื•ื“ื“ื•ืช). ื”ืขืžื•ื“ื•ืช ืฉื ื•ืฆืจื•ืช ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ืžืฉื ื™ ืกื•ื’ื™ื - ืžืื•ื—ืกื ื™ื ื•ื•ื™ืจื˜ื•ืืœื™ื™ื. ื‘ืžืงืจื” ื”ืจืืฉื•ืŸ, ื”ืขืจืš ืžื—ื•ืฉื‘ ื‘ื–ืžืŸ ื”ื•ืกืคื” ืื• ืฉื™ื ื•ื™ ืฉืœ ื”ื ืชื•ื ื™ื, ื•ื‘ืžืงืจื” ื”ืฉื ื™, ื”ืขืจืš ืžื—ื•ืฉื‘ ื‘ื›ืœ ืงืจื™ืื” ืขืœ ืกืžืš ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืฉืœ ืขืžื•ื“ื•ืช ืื—ืจื•ืช. ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, PostgreSQL ืชื•ืžืš ืจืง ื‘ืขืžื•ื“ื•ืช ืฉื ื•ืฆืจื• ืžืื•ื—ืกื ื•ืช;
  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ื ืชื•ื ื™ื ืžืžืกืžื›ื™ JSON ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ื™ ื ืชื™ื‘, ืžื–ื›ื™ืจ Xpath ื•ืžื•ื’ื“ืจ ื‘ืชืงืŸ SQL/JSON. ืžื ื’ื ื•ื ื™ ืื™ื ื“ืงืก ืงื™ื™ืžื™ื ืžืฉืžืฉื™ื ืœืฉื™ืคื•ืจ ื”ื™ืขื™ืœื•ืช ืฉืœ ืขื™ื‘ื•ื“ ื‘ื™ื˜ื•ื™ื™ื ื›ืืœื” ืขื‘ื•ืจ ืžืกืžื›ื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ืคื•ืจืžื˜ JSONB;
  • ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื”ื•ื ื”ืฉื™ืžื•ืฉ ื‘ืžื”ื“ืจ JIT (Just-in-Time) ื”ืžื‘ื•ืกืก ืขืœ ืคื™ืชื•ื—ื™ LLVM ื›ื“ื™ ืœื”ืื™ืฅ ืืช ื”ื‘ื™ืฆื•ืข ืฉืœ ื‘ื™ื˜ื•ื™ื™ื ืžืกื•ื™ืžื™ื ื‘ืžื”ืœืš ืขื™ื‘ื•ื“ ืฉืื™ืœืชื•ืช SQL. ืœื“ื•ื’ืžื”, JIT ืžืฉืžืฉ ื›ื“ื™ ืœื”ืื™ืฅ ืืช ื”ื‘ื™ืฆื•ืข ืฉืœ ื‘ื™ื˜ื•ื™ื™ื ื‘ืชื•ืš ื‘ืœื•ืงื™ื ืฉืœ WHERE, ืจืฉื™ืžื•ืช ื™ืขื“, ื‘ื™ื˜ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื ื•ื›ืžื” ืคืขื•ืœื•ืช ืคื ื™ืžื™ื•ืช;
  • ื‘ื™ืฆื•ืขื™ ื”ืื™ื ื“ืงืก ืฉื•ืคืจื• ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™. ืื™ื ื“ืงืกื™ B-tree ืžื•ืชืืžื™ื ืœืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื•ืช ืฉื‘ื”ืŸ ื”ืื™ื ื“ืงืกื™ื ืžืฉืชื ื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช - ืžื‘ื—ื ื™ TPC-C ืžืจืื™ื ืขืœื™ื™ื” ื›ื•ืœืœืช ื‘ื‘ื™ืฆื•ืขื™ื ื•ื”ืคื—ืชื” ืžืžื•ืฆืขืช ื‘ืฆืจื™ื›ืช ืฉื˜ื— ื”ื“ื™ืกืง ืฉืœ 40%. ืชืงื•ืจื” ืžื•ืคื—ืชืช ื‘ืขืช ื™ืฆื™ืจืช ื™ื•ืžืŸ ื›ืชื™ื‘ื” ืงื“ื™ืžื” (WAL) ืขื‘ื•ืจ ืกื•ื’ื™ ืื™ื ื“ืงืก GiST, GIN ื•-SP-GiST. ืขื‘ื•ืจ GiST, ื ื•ืกืคื” ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืื™ื ื“ืงืกื™ื ืฉืœ ืžืขื˜ืคืช (ื‘ืืžืฆืขื•ืช ื”ื‘ื™ื˜ื•ื™ INCLUDE) ื”ื›ื•ืœืœื™ื ืขืžื•ื“ื•ืช ื ื•ืกืคื•ืช. ื‘ืคืขื•ืœื” ืฆื•ืจ ืกื˜ื˜ื™ืกื˜ื™ืงื” ืžืกืคืง ืชืžื™ื›ื” ื‘ืกื˜ื˜ื™ืกื˜ื™ืงื” ืฉืœ Most Common Value (MCV) ื›ื“ื™ ืœื™ืฆื•ืจ ืชื•ื›ื ื™ื•ืช ืฉืื™ืœืชื•ืช ืื•ืคื˜ื™ืžืœื™ื•ืช ื™ื•ืชืจ ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืขืžื•ื“ื•ืช ื‘ื—ืœื•ืงื” ืœื ืื—ื™ื“ื”;
  • ื™ื™ืฉื•ื ื”ื—ืœื•ืงื” ืžื•ืชืื ืœืฉืื™ืœืชื•ืช ื”ืžืฉืชืจืขื•ืช ืขืœ ื˜ื‘ืœืื•ืช ืขื ืืœืคื™ ืžื—ื™ืฆื•ืช, ืืš ืžื•ื’ื‘ืœื•ืช ืœื‘ื—ื™ืจืช ืชืช-ืงื‘ื•ืฆื” ืžื•ื’ื‘ืœืช ืฉืœ ื ืชื•ื ื™ื. ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื”ื•ืกืคืช ื ืชื•ื ื™ื ืœื˜ื‘ืœืื•ืช ืžื—ื•ืœืงื•ืช ื‘ืืžืฆืขื•ืช ืคืขื•ืœื•ืช INSERT ื•-COPY ื”ื•ื’ื“ืœื•, ื•ื ื™ืชืŸ ื’ื ืœื”ื•ืกื™ืฃ ืงื˜ืขื™ื ื—ื“ืฉื™ื ื“ืจืš "ALTER TABLE ATTACH PARTITION" ืžื‘ืœื™ ืœื—ืกื•ื ืืช ื‘ื™ืฆื•ืข ื”ืฉืื™ืœืชื”;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ืจื—ื‘ื” ืื•ื˜ื•ืžื˜ื™ืช ื‘ืฉื•ืจื” ืฉืœ ื‘ื™ื˜ื•ื™ื™ ื˜ื‘ืœื” ืžื•ื›ืœืœื™ื (ื‘ื™ื˜ื•ื™ ืœืฉื•ืœื—ืŸ ื ืคื•ืฅ, CTE) ื”ืžืืคืฉืจื•ืช ืฉื™ืžื•ืฉ ื‘ืขืจื›ื•ืช ืชื•ืฆืื•ืช ื–ืžื ื™ื•ืช ืขื ืฉื ืฉืฆื•ื™ื ื• ื‘ืืžืฆืขื•ืช ื”ืฆื”ืจืช WITH. ืคืจื™ืกื” ืžื•ื˜ื‘ืขืช ื™ื›ื•ืœื” ืœืฉืคืจ ืืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืจื•ื‘ ื”ืฉืื™ืœืชื•ืช, ืืš ื”ื™ื ืžืฉืžืฉืช ื›ืขืช ืจืง ืขื‘ื•ืจ CTEs ืœื ืจืงื•ืจืกื™ื‘ื™ื™ื;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืœื ื“ื˜ืจืžื™ื ื™ืกื˜ื™ ืžืืคื™ื™ื ื™ื ืฉืœ ื”ืžืงื•ื "ืื™ืกื•ืฃ", ื”ืžืืคืฉืจ ืœืš ืœื”ื’ื“ื™ืจ ื›ืœืœื™ ืžื™ื•ืŸ ื•ืฉื™ื˜ื•ืช ื”ืชืืžื” ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ืžืฉืžืขื•ืช ืฉืœ ืชื•ื•ื™ื (ืœื“ื•ื’ืžื”, ื‘ืขืช ืžื™ื•ืŸ ืขืจื›ื™ื ื“ื™ื’ื™ื˜ืœื™ื™ื, ื ื•ื›ื—ื•ืช ืฉืœ ืžื™ื ื•ืก ื•ื ืงื•ื“ื” ืžื•ืœ ืžืกืคืจ ื•ืกื•ื’ื™ื ืฉื•ื ื™ื ื ืœืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ ืฉืœ ื›ืชื™ื‘, ื•ื‘ื”ืฉื•ื•ืื”, ื”ืžืงืจื” ืฉืœ ืชื•ื•ื™ื ื•ื”ื™ืžืฆืื•ืช ืกื™ืžืŸ ืžื‘ื˜ื ืื™ื ื ื ืœืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ) ;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืื™ืžื•ืช ืœืงื•ื— ืžืจื•ื‘ื” ื’ื•ืจืžื™ื, ืฉื‘ื• ื‘-pg_hba.conf ื ื™ืชืŸ ืœืฉืœื‘ ืื™ืžื•ืช ืชืขื•ื“ืช SSL (clientcert=verify-full) ืขื ืฉื™ื˜ืช ืื™ืžื•ืช ื ื•ืกืคืช ื›ื’ื•ืŸ scram-sha-256 ืœืื™ืžื•ืช;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ืฆืคื ื” ืฉืœ ืขืจื•ืฅ ื”ืชืงืฉื•ืจืช ื‘ืขืช ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช GSSAPI, ื”ืŸ ื‘ืฆื“ ื”ืœืงื•ื— ื•ื”ืŸ ื‘ืฆื“ ื”ืฉืจืช;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืœืงื‘ื™ืขืช ืฉืจืชื™ LDAP ื‘ื”ืชื‘ืกืก ืขืœ ืจืฉื•ืžื•ืช "DNS SRV" ืื PostgreSQL ื‘ื ื•ื™ ืขื OpenLDAP;
  • ื ื•ืกืคื” ืคืขื•ืœื”"ืฆื™ื™ืŸ ืžื—ื“ืฉ ื‘ืžืงื‘ื™ืœยป ืœื‘ื ื•ืช ืžื—ื“ืฉ ืื™ื ื“ืงืกื™ื ืžื‘ืœื™ ืœื—ืกื•ื ืคืขื•ืœื•ืช ื›ืชื™ื‘ื” ืœืื™ื ื“ืงืก;
  • ื ื•ืกืคื” ืคืงื•ื“ื” pg_checksums, ื”ืžืืคืฉืจ ืœืš ืœื”ืคืขื™ืœ ืื• ืœื‘ื˜ืœ ื‘ื“ื™ืงืช ืกื›ื•ืžื™ ื‘ื“ื™ืงื” ืฉืœ ื“ืคื™ ื ืชื•ื ื™ื ืขื‘ื•ืจ ืžืกื“ ื ืชื•ื ื™ื ืงื™ื™ื (ื‘ืขื‘ืจ ืคืขื•ืœื” ื–ื• ื ืชืžื›ื” ืจืง ื‘ืžื”ืœืš ืืชื—ื•ืœ ืžืกื“ ื”ื ืชื•ื ื™ื);
  • ืกื™ืคืง ืคืœื˜ ืฉืœ ืžื—ื•ื•ืŸ ื”ืชืงื“ืžื•ืช ืขื‘ื•ืจ ืคืขื•ืœื•ืช CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL ื•-pg_checksums;
  • ื ื•ืกืคื” ืคืงื•ื“ื”"ืฆื•ืจ ืฉื™ื˜ืช ื’ื™ืฉื”ยป ื›ื“ื™ ืœื—ื‘ืจ ืžื˜ืคืœื™ื ืœืฉื™ื˜ื•ืช ืื—ืกื•ืŸ ื˜ื‘ืœื” ื—ื“ืฉื•ืช ื”ืžื•ืชืืžื•ืช ืœืžืฉื™ืžื•ืช ืกืคืฆื™ืคื™ื•ืช ืฉื•ื ื•ืช. ื ื›ื•ืŸ ืœืขื›ืฉื™ื• ืฉื™ื˜ืช ื”ื’ื™ืฉื” ืœื˜ื‘ืœื” ื”ืžื•ื‘ื ื™ืช ื”ื™ื—ื™ื“ื” ื”ื™ื "ืขืจื™ืžื”";
  • ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” recovery.conf ืžื•ื–ื’ ืขื postgresql.conf. ื›ืื™ื ื“ื™ืงื˜ื•ืจื™ื ืœืžืขื‘ืจ ืœืžืฆื‘ ืฉืœ ื”ืชืื•ืฉืฉื•ืช ืœืื—ืจ ื›ื™ืฉืœื•ืŸ, ืขื›ืฉื™ื• ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื”ืฉืชืžืฉ ื‘ืงื‘ืฆื™ recovery.signal ื•-standby.signal.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”