ืืืขืชื, ืื ืืืื ืืืืืืจืืช ืงืืืืืช, PostgreSQL 12 ืืื ื ืืืื ืคืืฆ'ืจ ืืืคืื ื ืืื ืื ืฉื ืืื (ืืื ืืืืงื ืืืืืฆืืช ืื ืืงืืืืืืช ืฉืืืืชืืช). ืคืขื ืืชืืืืชื ืฉืืืืคืืื ืืขืืงืจื ืฉื PostgreSQL 12 ืืื ืืฆืืืืช ืจืื ืืืชืจ. ืืื ืื ืื ืื ืฉืืชื ืฆืจืื ืืฉืืชื ืื ืื ืืช ืื ืชืื ืื ืืงืจืืืืื ืฉื ืืขืกืง ืฉืื?
ืืื PostgreSQL 12 ืื ืขืืฆืจ ืฉื: ืขื ืชืืื ืืช ืืืฉืืช ืืฉืืคืืจืื, ืืืฉืืืื ืืขืืื ืืื ืืืชืจ, ืืื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืื ืืฉืืจื!
(ืืื, ืืืื ืชืื ื ืืืืฉ ืืช ืืืื ืืงืกืื, ืืื ืืืืืืจื ืืื ืื ืื ืืคืืื ืืื ืฉืื ืื ื ืจืืืืื.)
ืืืื ื ืืืจ ืืฉืืจื ืืช PostgreSQL ืืืืื ืืช ืืื ืืฉืืคืืจืื ืืฉืืขืืชืืื ืืื ืืชืขืกืงืืช ืืืืชืจืช. ืืคื ื ืืื ืฉื ืื, ืกืงืจืชื ืฉืืจืื ื-PostgreSQL 9.4 ื-PostgreSQL 10 ืืจืืืชื ืืื ืืืคืืืงืฆืื ืืืฆื ืืืืืช ืืฉืืคืืจ ืืืงืืืืืืช ืฉื ืืฉืืืืชืืช ื-PostgreSQL 10. ืืืื ืืฉืื, ืืืขื ืฉืื ืืืจ ืื ื ืืจืฉ ืืื ื (ืจืง ืืืืจ ืคืจืืืจ ืชืฆืืจื max_parallel_workers
).
ืืกืืื, ืื ื ืื ืืืฉืจ ืืืฉืืืื ืขืืืืื ืืื ืืืชืจ ืืื ืืืืจ ืฉืืจืื. ืืื ืื ื ืื ืกืื ืืืื ืืจืฆืืช ืืช ืืืฉืชืืฉืื, ืื ื-PostgreSQL ืืฉ ืืืชืจ ืืืืชืจ ืืืื.
ืื ืืื ืฉืืจืื ืคืฉืื ื-PostgreSQL 12 ืืืื ืืฉืื ืืืชื? ืื ื ืืืื ืื ืขืืฉืื.
ืฉืืคืืจืื ืืืืืื ืืืื ืืงืก
ืืื ืืื ืืงืก, ืืกื ื ืชืื ืื ืื ืืืืข ืจืืืง. ืืื ืขืื ืืชื ืืืื ืืืฆืื ืืืืข ืืืืืจืืช? ืืขืจืืช ืืืื ืืงืก ืืืกืืกืืช ืฉื PostgreSQL ื ืงืจืืช
ืื ืื ื ืคืฉืื ืืฉืชืืฉืื ืืืืคืจืืืจ CREATE INDEX ON some_table (some_column)
, ื-PostgreSQL ืขืืฉื ืขืืืื ืจืื ืืื ืืฉืืืจ ืขื ืืืื ืืงืก ืืขืืืื ืืืื ืฉืื ื ืื ืืืื ืืื ืืกืื, ืืขืืื ืื ืืืืืงืื ืขืจืืื. ืืื ืขืืื ืืื, ืืื ืืงืกื.
ืืื ืืืื ืืงืกืื ืฉื PostgreSQL ืืฉ ืืขืื ืืืช - ืื
PostgreSQL 12 ืืฉืคืจ ืืืื ืืช ืืืืฆืืขืื ืฉื ืืื ืืงืกืื ืฉื ืขืฅ B, ืื ืืกืืืื ืขื ืืืืช ืืืื ืืื TPC-C ืืจืื ืฉืืืืืฆืข ื ืขืฉื ืฉืืืืฉ ื-40% ืคืืืช ืืงืื. ืืขืช ืื ื ืืืืื ืคืืืช ืืื ืื ืจืง ืืฉืืืจื ืขื ืืื ืืงืกืื ืฉื B-tree (ืืืืืจ, ืืคืขืืืืช ืืชืืื), ืืื ืื ืืฉืืืคืช ื ืชืื ืื, ืืืืืื ืฉืืืื ืืงืกืื ืืจืื ืืืชืจ ืงืื ืื.
ืืืฉืืืื ืฉืืขืืื ืื ืืืืคื ืคืขืื ืืช ืืืืืืืช ืฉืืื - ืืืจื ืืื ืืืฉืืื OLTP (
ืืกืืจืืืืืช ืฉืืจืื ืืกืืืืืช ืืืจืฉืืช ืื ืืื ืืืืฉ ืฉื ืืื ืืงืกื B-tree ืืื ืื ืฆื ืืช ืืืชืจืื ืืช ืืืื (ืืืฉื.
ืืฉื ื ืฉืืคืืจืื ื ืืกืคืื ืืชืฉืชืืช ืืืื ืืงืก ื-PostgreSQL 12. ืขืื ืืฉืื ืฉืืื ืื ืงืกื -
PostgreSQL 12 ืืคืืืช ืืช ืืชืงืืจื ืฉื ืจืฉืืืืช WAL ืฉื ืืฆืจืืช ืขื ืืื ืืืื ืืงืกืื GiST, GIN ื-SP-GiST ืืืืื ืื ืืืช ืืืื ืืงืก. ืื ืืกืคืง ืืกืคืจ ืืชืจืื ืืช ืืืืฉืืื: ืจืฉืืืืช WAL ืชืืคืกืืช ืคืืืช ืืงืื ืืืืกืง, ืืื ืชืื ืื ืืืฉืืขืื ืืืจ ืืืชืจ, ืืืื ืืืืื ืืชืืืฉืฉืืช ืืืกืื ืื ืืชืืืฉืฉืืช ืื ืงืืืช ืืื. ืื ืืชื ืืฉืชืืฉ ืืืื ืืงืกืื ืืืื ืืืคืืืงืฆืืืช ืฉืื (ืืืฉื, ืืคืืืงืฆืืืช ืืืื-ืืจืืืืืช ืืืืกืกืืช PostGIS ืืฉืชืืฉืืช ืจืืืช ืืืื ืืงืก GiST), ืื ืขืื ืชืืื ื ืฉืชืฉืคืจ ืืฉืืขืืชืืช ืืช ืืืืืื ืืื ืื ืืืืฅ ืืฆืืื.
ืืืืงื - ืืืืื ืืืชืจ, ืืืื ืืืชืจ, ืืืืจื ืืืชืจ
ืืืฆื PostgreSQL 10
ื-PostgreSQL 12, ืืืืฆืืขืื ืฉื ืืขืจืืช ืืืืืฆืืช ืืฉืชืคืจื ืืฉืืขืืชืืช, ืืืืืื ืื ืืฉ ืืืคื ืืืืฆืืช ืืืืื. ืืืืืื, ืื ืฉืืืืชื ืืฉืคืืขื ืจืง ืขื ืืื ืืืืฆืืช ืืืืื ืขื ืืืคื ืืื, ืืื ืชืชืืฆืข ืืจืื ืืืชืจ ืืืจ. ืืืืฆืืขืื ืื ืจืง ืืฉืืคืจืื ืขืืืจ ืกืืื ืฉืืืืชืืช ืืื. ืืชื ืื ืชืืืื ืขื ืืื ืคืขืืืืช INSERT ืืืืจืืช ืืืชืจ ืืืืืืืช ืขื ืืืืฆืืช ืืจืืืืช.
ืืงืืืช ื ืชืื ืื ืืืืฆืขืืช
ืืืืืช ืืืชืจืื ืืช ืืื, PostgreSQL ืืืคืฉืจ ืื ืืืืกื ืืขืจืื ื ืชืื ืื ืืืืืื ืขืื ืืืชืจ ืืืืคืื ืืืชื ืืงืืื ืืืชืจ ืืืืืืจ. ืืืื ืืืืฅ ืืฆืืื. ืื ืืืคืืืงืฆืื ืืฉ ืืืืฆืืช ืจืืืช, ืืืื ืืงืืืช ื ืชืื ื ืกืืจืืช ืืื, ืฉืืจืื ืคืฉืื ืืฉืคืจ ืืฉืืขืืชืืช ืืช ืืืืฆืืขืื ืฉืื.
ืืืจืืช ืฉืื ืื ืืืืืง ืฉืืคืืจ "ืฉืืจื ืืชืืื ื", PostgreSQL 12 ืืืคืฉืจ ืื ืืืฆืืจ ืืคืชืืืช ืืจืื ืฉืืชืืืืกืื ืืืืืืืช ืืืืืงืืช, ืื ืฉืืืคื ืืช ืืืืืฆื ืืชืขื ืื ืืขืืื ืืืชื.
ืขื ืฉืืืืชืืช ืคืฉืื ืืฉืชืคืจ ืืืจืื
ืืืฉืจ
ืืขืชืื ืงืจืืืืช ืื ื ืืืฆื ืฉืืชืืืืื ื-SQL ืืืืืื ืืืฉืชืืฉ ื-CTE; ืื ืืชื ืืืชื ืืืชื ืืฆืืจื ืืกืืืืช, ืื ืืืืช ืืจืืืฉ ืืืืื ืืชื ืืืชื ืชืืื ืืช ืืืจืื. ืืืืคื ืืืฉื, ืืืืชื ืืฉืืชื ืืช ืืฉืืืืชืืช ืืืื ืืื ืืืชืืฆื ะฑะตะท CTE ืืืืืืช ืืคืจืืืืงืืืืืืช. ืขืืฉืื ืืื ืฉืื ื.
PostgreSQL 12 ืืืคืฉืจ ืื ืืืืืืข ืกืื ืืกืืื ืฉื CTE ืืื ืชืืคืขืืช ืืืืื (SELECT
), ืฉืื ื ืขืฉื ืฉืืืืฉ ืคืขื ืืืช ืืืื ืืงืจืืช ืกืืฃ ืืืงืฉื. ืื ืืืืชื ืขืืงื ืืืจ ืฉืืืืชืืช ื-CTE ืฉืืชืืชื ืืืืฉ, ืจืืื ืืื ื ืื ืกืืช ืืงืืืืจืื ืืื. ืื ืขืืืจ ืืืคืชืืื ืืืชืื ืงืื ืืจืืจ ืฉืขืืฉืื ืื ืคืืขื ืืืืืจืืช.
ืืชืจ ืขื ืื, PostgreSQL 12 ืืืืขื ืืช ืืืฆืืข SQL ืืขืฆืื, ืืืื ืฉืชืฆืืจื ืืขืฉืืช ืืืจ. ืืืืจืืช ืฉืื ืจืื ืื ืืฆืืจื ืืืฆืข ืืืคืืืืืืฆืื ืฉื ืฉืืืืชืืช ืืืื ืขืืฉืื, ืื ื ืืืจ ืฉ-PostgreSQL ืืืฉืื ืืขืืื ืขื ืืืคืืืืืืฆืื ืฉื ืฉืืืืชืืช.
Just-in-Time (JIT) - ืืขืช ืืจืืจืช ืืืื
ืืืขืจืืืช PostgreSQL 12 ืขื ืชืืืื
ืืืืืื ืฉ-JIT ืืืคืขื ืืืจืืจืช ืืืื ื-PostgreSQL 12, ืืืืฆืืขืื ืืฉืชืคืจื ืืขืฆืื, ืืื ืื ื ืืืืืฅ ืืืืืง ืืช ืืืคืืืงืฆืื ื-PostgreSQL 11, ืฉืืฆืืื JIT, ืืื ืืืืื ืืช ืืืฆืืขื ืืฉืืืืชื ืืืจืืืช ืื ืืชื ืฆืจืื ืืืืื ืืฉืื.
ืื ืืืื ืฉืืจ ืืชืืื ืืช ืืืืฉืืช ื-PostgreSQL 12?
ื-PostgreSQL 12 ืืฉ ืืืื ืชืืื ืืช ืืืฉืืช ืืืื ืืืืช, ืืื ืืืืืืืช ืืืืื ื ืชืื ื JSON ืืืืฆืขืืช ืืืืืื ืืกืืื ืกืื ืืจืืืื ืฉื SQL/JSON ืืขื ืืืืืืช ืืจืืื ืืืจืืื ืขื ืคืจืืืจ clientcert=verify-full
, ืืฆืจื ืขืืืืืช ืืขืื ืืจืื ืืืชืจ. ืืกืคืืง ืืคืืกื ื ืคืจื.
ืืื PostgreSQL 10, PostgreSQL 12 ืืฉืคืจ ืืช ืืืืฆืืขืื ืืืืืืื ืืื ืืืืจ ืืฉืืจืื. ืืชื, ืืืืื, ืืืื ืืืืืช ืื ืืจื ืืฉืื - ืืืืง ืืช ืืืคืืืงืฆืื ืืชื ืืื ืืืืื ืืืขืจืืช ืืืืฆืืจ ืืคื ื ืืคืขืืช ืฉืืคืืจืื, ืืคื ืฉืขืฉืืชื ืขื PostgreSQL 10. ืื ืื PostgreSQL 12 ืืืจ ืืฆืื ืืืชืจ ืืื ืฉืฆืืคืืชื, ืื ืชืชืขืฆืื ืืืืืงื ืืืฉืืืื ืืืกืืืืืช, ืืคื ื ืฉืืจืืจื ืืืืฆืืจ.
ืืงืืจ: www.habr.com