ืืื ืืืื ืืืื ืื ื, ื ืื ืขื ืืขื ืคืจืืขืจืืืงื ืจืืืืกืื, 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 ืืืคึผืจืืืื ืื ืคืึธืจืฉืืขืืื ื ืคืื ื-ืืืื ืื ืืขืงืกืื, ืืื ืืงืกืคึผืขืจืึทืืึทื ืฅ ืืื ืืขื ืืฉืืึทืจืงืก ืืื TPC-C ืืึธืื ืืขืืืืื ืึทื ืืื ืืืจืืฉื ืืืืขื 40% ืืืืื ืืงืขืจ ืคึผืืึทืฅ ืืื ืืืฆื ืืขื ืืฆื. ืืืฆื ืืืจ ืคืึทืจืืจืขื ืืขื ืืืืื ืืงืขืจ ืฆืืึทื ื ืื ืืืืื ืืืืฃ ืืืื ืืืื ืื ื ื-ืืืื ืื ืืขืงืกืื (ืืึธืก ืืื, ืืืืฃ ืฉืจืืึทืื ืึทืคึผืขืจืืืฉืึทื ื), ืึธืืขืจ ืืืื ืืืืฃ ืจืืืจืืืืื ื ืืึทืื, ืืืืึทื ืื ืื ืืขืงืกืื ืืขื ืขื ืคืื ืงืืขื ืขืจืขืจ.
ืึทืคึผืคึผืืืงืึทืืืึธื ืก ืืืึธืก ืึทืงืืืืืื ืืขืจืืืึทื ืืืงื ืืืืขืจ ืืืฉื - ืืืคึผืืงืื OLTP ืึทืคึผืืึทืงืืืฉืึทื ื (
ืขืืืขืืข ืึทืคึผืืจืืื ืกืืจืึทืืขืืืขืก ืืึทืจืคื ืจืืืืืืื ื ื-ืืืื ืื ืืขืงืกืื ืฆื ื ืืฆื ืื ืืขื ืขืคืืฅ (ืืืฉื.
ืขืก ืืขื ืขื ืื ืืขืจืข ืืืคึผืจืืืืืึทื ืฅ ืฆื ืื ืื ืืขืงืกืื ื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื PostgreSQL 12. ืื ืื ืืขืจ ืืึทื ืืื ืขืก ืืื ืืขืืืขื ืขืืืขืืข ืืึทืืืฉ -
PostgreSQL 12 ืืื ืจืืืืกื ืื ืึธืืืืขืจืืขื ืคืื WAL ืจืขืงืึธืจืืก ืืืึธืก ืืขื ืขื ืืืฉืืคื ืืืจื ืื GiST, GIN ืืื SP-GiST ืื ืืขืงืกืื ืืขืฉืึทืก ืืื ืืขืงืก ืงืึทื ืกืืจืึทืงืฉืึทื. ืืึธืก ืืื ืขืืืขืืข ืืึทืืึธืฉืขืกืืืง ืืขื ืขืคืืฅ: WAL ืจืขืงืึธืจืืก ื ืขืืขื ืืืืื ืืงืขืจ ืืืกืง ืคึผืืึทืฅ, ืืื ืืึทืื ืืขื ืขื ืจืืคึผืืืื ืคืึทืกืืขืจ, ืึทืืึท ืืื ืืขืฉืึทืก ืืืืืืง ืึธืคึผืืื ืึธืืขืจ ืคืื ื-ืืื-ืฆืืื ืึธืคึผืืื. ืืืื ืืืจ ื ืืฆื ืึทืืึท ืื ืืขืงืกืื ืืื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ื (ืืืฉื, PostGIS-ืืืืืจื ืืืฉืืึธืกืคึผืึทืืืึทื ืึทืคึผืืึทืงืืืฉืึทื ื ื ืืฆื ืื GiST ืืื ืืขืงืก ืคืื), ืืึธืก ืืื ืื ืื ืืขืจ ืฉืืจืื ืืืึธืก ืืืขื ืืืืืืืืง ืคึฟืึทืจืืขืกืขืจื ืื ืืขืจืคืึทืจืื ื ืึธื ืงืืื ืื ืคืื ืืืื ืืืื.
ืฆืขืืืืืื ื - ืืืืขืจ, ืืขืกืขืจ, ืคืึทืกืืขืจ
PostgreSQL 10 ืืึทืงืขื ืขื
ืืื PostgreSQL 12, ืื ืคืึธืจืฉืืขืืื ื ืคืื ืื ืคึผืึทืจืืืฉืึทื ื ืกืืกืืขื ืืื ืืขืืืืจื ืืืืืืืืง ืืขืกืขืจ, ืกืคึผืขืฆืืขื ืืืื ืขืก ืืขื ืขื ืืืืื ืืขืจ ืคืื ืคึผืึทืจืืืฉืึทื ื ืืื ืื ืืืฉ. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืึท ืึธื ืคึฟืจืขื ืึทืคืขืงืฅ ืืืืื ืึท ืืืกื ืคึผืึทืจืืืฉืึทื ื ืืื ืึท ืืืฉ ืืื ืืืืื ืืขืจ ืคืื ืืื, ืขืก ืืืขื ืืืกืคืืจื ืคืื ืคืึทืกืืขืจ. ืคืึธืจืฉืืขืืื ื ืืื ื ืืฉื ืืืืื ืืืคึผืจืืืื ืคึฟืึทืจ ืื ืืืืคึผืก ืคืื ืคึฟืจืืื. ืืืจ ืืืขื ืืืื ืืึทืืขืจืงื ืืื ืคืึทืกืืขืจ INSERT ืึทืคึผืขืจืืืฉืึทื ื ืืขื ืขื ืืืืฃ ืืืฉื ืืื ืงืืืคื ืคึผืึทืจืืืฉืึทื ื.
ืจืขืงืึธืจืืื ื ืืึทืื ื ืืฆื
ืืึทื ืง ืฆื ืื ืึทืืืืึทื ืืืืืฉืื, PostgreSQL ืึทืืึทืื ืืืจ ืฆื ืงืจืึธื ืืคืืื ืืจืขืกืขืจืข ืืึทืื ืฉืืขืื ืืื ืืึทืื ืืื ืืจืื ืืขืจ ืฆื ืฆืืจืืงืงืจืืื. ืืื ืงืืื ืื ืคืื ืืืื ืืืึทื. ืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืคืืืข ืคึผืึทืจืืืฉืึทื ื, ืึทืืึท ืืื ืจืขืงืึธืจืืื ื ืฆืืื ืกืขืจืืข ืืึทืื, ืึท ืคึผืฉืื ืึทืคึผืืจืืื ืืืขื ืืืืืืืืง ืคึฟืึทืจืืขืกืขืจื ืืืึทื ืคืึธืจืฉืืขืืื ื.
ืืึธืืฉ ืืึธืก ืืื ื ืืฉื ืคึผืื ืงื ืึท "ืึทืคึผืืจืืื ืืื ืื ืื" ืคึฟืึทืจืืขืกืขืจืื ื, PostgreSQL 12 ืึทืืึทืื ืืืจ ืฆื ืฉืึทืคึฟื ืคืจืขืื ืฉืืืกืืขื ืืืึธืก ืืขืจืืึธื ืขื ืคึผืึทืจืืืฉืึทื ื ืืืฉื, ืืืึธืก ืืืื ืคึผืึทืจืืืฉืึทื ืื ื ืึท ืคืึทืจืืขื ืืื ืฆื ืึทืจืืขืื ืืื.
ืืื ืคึฟืจืืื ื ืึธืจ ืืึทื ืึท ืคึผืืึทืฅ ืืขืกืขืจ
ืืืขื
ืืื ืึธืคื ืืขืคึฟืื ืขื ืึทื ื ืขืืืืืขืก ืฆื SQL ืืืืข ืฆื ื ืืฆื CTEs; ืืืื ืืืจ ืฉืจืืึทืื ืืื ืึท ืืืืขืจ ืืืขื, ืขืก ืืึทืงืข ืคืืื ืืื ืืืจ ืฉืจืืึทืื ืึท ืืืคึผืขืจืึทืืืื ืคึผืจืึธืืจืึทื. ืคึผืขืจืกื ืึทืื, ืืื ืืืืงื ืฆื ืจืืจืืื ืื ืคึฟืจืืื ืฆื ืืึทืงืืืขื ืึทืจืื ืึธื CTE ืืื ืคืึทืจืืจืขืกืขืจื ืคึผืจืึธืืืึทืงืืืืืืื. ืืืฆื ืึทืืฅ ืืื ืึทื ืืขืจืฉ.
PostgreSQL 12 ืึทืืึทืื ืืืจ ืฆื ืื ืืื ืข ืึท ืกืคึผืขืฆืืคืืฉ ืืืคึผ ืคืื CTE ืึธื ืืืึทื ืืคืขืงืฅ (SELECT
), ืืืึธืก ืืื ืืขื ืืฆื ืืืืื ืึทืืึธื ืืขืื ืื ืกืืฃ ืคืื ืื ืืงืฉื. ืืืื ืืื ืืึทืืื ืฉืคึผืืจ ืคืื ืื CTE ืคึฟืจืืื ืืืึธืก ืืื ืจืืจืึธืื, ืจืืึฟ ืคืื ืืื ืืืึธืื ืคืึทืื ืืื ืืขื ืงืึทืืขืืึธืจืืข. ืืึธืก ืืขืืคึผืก ืืขืืืขืืึธืคึผืขืจืก ืฆื ืฉืจืืึทืื ืงืืึธืจ ืงืึธื ืืืึธืก ืืืฆื ืืืื ืืืืคื ืืขืฉืืืื ื.
ืืขืจืฆื, PostgreSQL 12 ืึธืคึผืืืืืืขืก ืื SQL ืืืจืืคืืจืื ื ืืื, ืึธื ืืืจ ืืึธืื ืฆื ืืึธื ืขืคึผืขืก. ืืื ืืึธืืฉ ืืื ืืืกืืึธืืข ืืืขื ื ืืฉื ืืึทืจืคึฟื ืฆื ืึทืคึผืืึทืืืื ืึทืืึท ืคึฟืจืืื ืืืฆื, ืขืก ืืื ืืจืืืก ืึทื PostgreSQL ืืืื ืฆื ืึทืจืืขืื ืืืืฃ ืึธื ืคึฟืจืขื ืึทืคึผืืึทืืึทืืืืฉืึทื.
ืคึผืื ืงื-ืืื-ืฆืืื (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