αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αž‡αž·αž›αŸ– αžšαž”αŸ€αž”αžŠαŸ‚αž› PostgreSQL 12 αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αž‡αž·αž›αŸ– αžšαž”αŸ€αž”αžŠαŸ‚αž› PostgreSQL 12 αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

PostgreSQL ៨.ៀ.αŸ¦αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒ "αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž›αŸ’αž’αž”αŸ†αž•αž»αžαžšαž”αžŸαŸ‹αž–αž·αž—αž–αž›αŸ„αž€" αž“αžΉαž„αž…αŸαž‰αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž–αžΈαžšαž”αžΈαžŸαž”αŸ’αžαžΆαž αŸαž‘αŸ€αž (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αžαžΆαž˜αž•αŸ‚αž“αž€αžΆαžš)αŸ” αžœαžΆαž’αŸ’αžœαžΎαžαžΆαž˜αž€αžΆαž›αžœαž·αž—αžΆαž‚αž’αž˜αŸ’αž˜αžαžΆαž“αŸƒαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαž„αž€αŸ’αž“αž»αž„αž˜αž½αž™αž†αŸ’αž“αžΆαŸ† αž αžΎαž™αž“αž·αž™αžΆαž™αžŠαŸ„αž™αžαŸ’αžšαž„αŸ‹αž‘αŸ… αžœαžΆαž–αž·αžαž‡αžΆαž‚αž½αžšαž’αŸ„αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŽαžΆαžŸαŸ‹αŸ” αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαžŸαž˜αžΆαž‡αž·αž€αžŸαž€αž˜αŸ’αž˜αž“αŸƒαžŸαž αž‚αž˜αž“αŸ PostgreSQL αŸ”

αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž˜αž·αž“αžŠαžΌαž…αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž˜αž»αž“αž‘αŸ 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 αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™ - αž–αž½αž€αž‚αŸαŸ” αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ‰αŸ„αž„ αž“αž·αž„αž™αž€αž‘αŸ†αž αŸ†αžαžΆαžŸαž”αž“αŸ’αžαŸ‚αž˜ αž“αž·αž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸƒαž€αžΆαžšαž‘αžΆαž‰αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αŸ” αžŠαŸ„αž™ "bloat" αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž›αž·αž”αž·αž€αŸ’αžšαž˜αž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” αž“αŸαŸ‡αž’αžΆαž… - αž¬αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“ - αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ tuples αžŸαŸ†αžšαžΆαž˜αžŠαŸ‚αž›αžœαžΆαž™αž€αž…αŸαž‰ αžœαŸ‰αžΆαž€αž™αžΌαž˜ (αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαž›αŸ„αž€ Peter Gaghan αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“)Peter Geoghegan)) αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž αžΎαž˜αž–αŸ„αŸ‡αž‚αžΊαž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž€αŸ†αž–αž»αž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αŸ”

PostgreSQL 12 αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ B-tree αž αžΎαž™αž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαžΌαž…αž‡αžΆ TPC-C αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž‡αžΆαž˜αž’αŸ’αž™αž˜ 40% αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž₯αž‘αžΌαžœαž“αŸαŸ‡αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž…αŸ†αžŽαžΆαž™αž–αŸαž›αžαž·αž…αž‡αžΆαž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž›αžΎαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ B-tree (αž“αŸ„αŸ‡αž‚αžΊαž“αŸ…αž›αžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαžŸαŸαžš) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαž‘αŸ…αž›αžΎαž€αžΆαžšαž‘αžΆαž‰αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αž„αžŠαŸ‚αžš αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αžΊαžαžΌαž…αž‡αžΆαž„αž…αŸ’αžšαžΎαž“αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžαžΆαžšαžΆαž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜ - αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ OLTP (αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„) - αž“αžΉαž„αž”αŸ’αžšαžΎαžαžΆαžŸ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαžΎαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” αž‘αŸ†αž αŸ†αžαžΆαžŸαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“ αž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“ αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž€αžΎαž“αž‘αžΎαž„αžŠαŸ„αž™αž˜αž·αž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžšαŸ’αžαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž”αž„αŸ’αž€αžΎαžαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ B-tree αž‘αžΎαž„αžœαž·αž‰ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž‰αž™αž€αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡ (ឧ. pg_upgrade αž“αžΉαž„αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ)αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αž˜αž»αž“αžšαž”αžŸαŸ‹ PostgreSQL αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αž’αŸ†αž“αŸ…αž›αžΎαžαžΆαžšαžΆαž„αž‘αžΎαž„αžœαž·αž‰αž”αžΆαž“αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαžšαž„αž…αžΆαŸ†αž™αŸ‰αžΆαž„αžŸαŸ†αžαžΆαž“αŸ‹ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž€αŸ’αž“αž»αž„αž–αŸαž›αž“αŸαŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ PostgreSQL 12 αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž›αŸ’αž’αž˜αž½αž™αž‘αŸ€αžαŸ– αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αž‘αžΎαž„αžœαž·αž‰αžŸαŸ’αžšαž”αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ REINDEX αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ”αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαžˆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž€αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ”

αž˜αžΆαž“αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž…αŸ†αž–αŸ„αŸ‡αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž›αž·αž”αž·αž€αŸ’αžšαž˜αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αŸ” αžšαžΏαž„αž˜αž½αž™αž‘αŸ€αžαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž˜αžΆαž“αžœαŸαž‘αž˜αž“αŸ’αžαžαŸ’αž›αŸ‡ - αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŸαžšαžŸαŸαžšαž‡αžΆαž˜αž»αž“, aka WAL (αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŸαžšαžŸαŸαžšαž˜αž»αž“)αŸ” αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŸαžšαžŸαŸαžšαž˜αž»αž“αž€αžαŸ‹αžαŸ’αžšαžΆαžšαžΆαž›αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž”αžšαžΆαž‡αŸαž™ αž“αž·αž„αž€αžΆαžšαž…αž˜αŸ’αž›αž„αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ’αžšαžΎαžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž“αž·αž„ αž€αžΆαžšαž„αžΎαž”αž‘αžΎαž„αžœαž·αž‰αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆ. αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž–αž·αžβ€‹αžŽαžΆαžŸαŸ‹ αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»β€‹αžŸαžšαžŸαŸαžšβ€‹αž˜αž»αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž‘αŸ…β€‹αžαžΆαžŸ αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹β€‹αžŠαž›αŸ‹β€‹αž€αžΆαžšβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

PostgreSQL 12 αž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž…αŸ†αž“αž½αž“αž›αžΎαžŸαž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆ WAL αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ GiST, GIN αž“αž·αž„ SP-GiST αž€αŸ†αž‘αž»αž„αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αŸ” αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ– αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆ WAL αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ†αž αŸ†αžαžΆαžŸαžαž·αž… αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž€αŸ‹αž‘αžΎαž„αžœαž·αž‰αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ αžŠαžΌαž…αž‡αžΆαž’αŸ†αž‘αž»αž„αž–αŸαž›αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αž‚αŸ’αžšαŸ„αŸ‡αž˜αž αž“αŸ’αžαžšαžΆαž™ αž¬αž€αžΆαžšαžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αž‘αžΆαž“αŸ‹αž–αŸαž›αžœαŸαž›αžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž§αž‘αžΆαž αžšαžŽαŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΌαž˜αž·αžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ PostGIS αž”αŸ’αžšαžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ GiST αž…αŸ’αžšαžΎαž“) αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž‘αŸ€αžαžŠαŸ‚αž›αž“αžΉαž„αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŠαŸ„αž™αž˜αž·αž“αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ”

αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€ - αž’αŸ†αž‡αžΆαž„αž“αŸαŸ‡αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“

PostgreSQL 10 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ† αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž”αŸ’αžšαž€αžΆαžŸ. αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 11 αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž“αŸƒαž•αŸ’αž“αŸ‚αž€αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αŸ‚αž€αž—αžΆαž‚αžαžΆαžŸαž”αžΆαž“αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž‡αžΆαž–αž·αžŸαŸαžŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž—αžΆαž‚αžαžΆαžŸαžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαŸ†αžŽαž½αžšαž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžαŸ‚αž—αžΆαž‚αžαžΆαžŸαž–αžΈαžšαž”αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž˜αžΆαž“αž–αž½αž€αžœαžΆαžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹ αžœαžΆαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αž·αž“αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžŸαŸ†αžŽαž½αžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‘αŸαŸ” αž’αŸ’αž“αž€αž€αŸαž“αžΉαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž•αž„αžŠαŸ‚αžšαžαžΆαžαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš INSERT αž›αžΏαž“αž”αŸ‰αž»αžŽαŸ’αžŽαžΆαž“αŸ…αž›αžΎαžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž˜αžΆαž“αž—αžΆαž‚αžαžΆαžŸαž…αŸ’αžšαžΎαž“αŸ”

αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„ - αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΊαž‡αžΆαžœαž·αž’αžΈαžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™ αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αŸ” αž‘αž‘αž½αž› JSON - αžαžΆαžšαžΆαž„αž”αŸ‚αž„αž…αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αž€αŸαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž•αž„αžŠαŸ‚αžšαŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž›αžΏαž“αžšαž½αž…αž‘αŸ…αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL 12 αžœαžΆαž–αž·αžαž‡αžΆαž αŸ„αŸ‡αž αžΎαžšαŸ”

αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž‘αžΆαŸ†αž„αž“αŸαŸ‡ PostgreSQL αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŸαŸ†αžŽαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αžΆαž“αŸ‹αžαŸ‚αž’αŸ† αž“αž·αž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž–αž½αž€αž‚αŸαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž˜αž€αžœαž·αž‰αŸ” αž αžΎαž™β€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αžαž·αžαžαŸ†β€‹αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αž‘αŸβ€‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αžΆαž“αž—αžΆαž‚αžαžΆαžŸαž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸŠαŸαžšαžΈαž–αŸαž›αžœαŸαž›αžΆ αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž“αžΉαž„αž’αŸ’αžœαžΎαž’αŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆαž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ”

αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžš "αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ αž“αž·αž„αžšαžΈαž€αžšαžΆαž™" PostgreSQL 12 αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αžΌαž“αžŸαŸ„αž”αžšαž‘αŸαžŸαžŠαŸ‚αž›αž™αŸ„αž„αžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€ αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž˜αžΆαž“αž—αžΆαž–αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αŸ”

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž½αžš αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„

αž“αŸ…αž–αŸαž› αž”αŸ†αžŽαŸ‡αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž“αŸ’αžŸαŸ„αž˜αžαžΆαžšαžΆαž„αžšαž½αž˜αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ (aka CTE, aka WITH queries) αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αžšαž„αŸ‹αž…αžΆαŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž’αŸ†αž–αžΈ αžαžΎαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαžΈαž€αžšαžΆαž™αž”αŸ‰αž»αžŽαŸ’αžŽαžΆαž‡αžΆαž˜αž½αž™ PostgreSQL. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž›αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ CTE αŸ”

αž‡αžΆαžšαžΏαž™αŸ—αžαŸ’αž‰αž»αŸ†αž™αž›αŸ‹αžαžΆαž’αŸ’αž“αž€αžαŸ’αž˜αžΈαžαŸ’αž˜αŸ„αž„ SQL αž…αžΌαž›αž…αž·αžαŸ’αžαž”αŸ’αžšαžΎ CTEs αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαžœαžΆαžαžΆαž˜αžšαž”αŸ€αž”αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αžœαžΆαž–αž·αžαž‡αžΆαž˜αžΆαž“αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαžΆαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹ αžαŸ’αž‰αž»αŸ†αž…αžΌαž›αž…αž·αžαŸ’αžαžŸαžšαžŸαŸαžšαžŸαŸ†αžŽαž½αžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‘αžΎαž„αžœαž·αž‰ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž‡αž»αŸ†αžœαž·αž‰ αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ CTE αž“αž·αž„αž”αž„αŸ’αž€αžΎαž“αž•αž›αž·αžαž—αžΆαž–αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αžœαžΈαŸ—αž‚αžΊαžαž»αžŸαž‚αŸ’αž“αžΆαŸ”

PostgreSQL 12 αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž‰αŸ’αž…αžΌαž›αž”αŸ’αžšαž—αŸαž‘αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒ CTE αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹ (SELECT) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžαŸ‚αž˜αŸ’αžαž„αž‚αžαŸ‹αž“αŸ…αž‡αž·αžαž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαžŸαŸ†αžŽαžΎαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαŸ’αž‰αž»αŸ†αžαžΆαž˜αžŠαžΆαž“αžŸαŸ†αžŽαž½αžš CTE αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αžΎαž„αžœαž·αž‰ αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸƒαž–αž½αž€αž‚αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αŸ’αž›αžΆαž€αŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž—αŸαž‘αž“αŸαŸ‡αŸ” αžœαžΆαž‡αž½αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαžšαžŸαŸαžšαž€αžΌαžŠαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αžŠαŸ‚αž›αž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αž›αžΏαž“αž•αž„αžŠαŸ‚αžšαŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž PostgreSQL 12 αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· SQL αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž αžΎαž™αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžŸαŸ†αžŽαž½αžšαž”αŸ‚αž”αž“αŸαŸ‡αž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αŸαžŠαŸ„αž™ αžœαžΆαž–αž·αžαž‡αžΆαž›αŸ’αž’αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž› PostgreSQL αž”αž“αŸ’αžαž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžŸαŸ†αžŽαž½αžšαŸ”

Just-in-Time (JIT) - αž₯αž‘αžΌαžœαž“αŸαŸ‡αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜

αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ PostgreSQL 12 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš LLVM αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ JIT αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αžŠαŸ†αž”αžΌαž„αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš αž‡αž·αž αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαžΆαž„αž€αŸ’αž“αž»αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž αžΎαž™αž‘αžΈαž–αžΈαžš αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αž“αŸ’αžŸαŸ„αž˜ (αž§αž‘αžΆαž αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαž‚αžΊ x + y) αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ (αžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ SELECT) αžŸαžšαž»αž” αž€αž“αŸ’αžŸαŸ„αž˜αž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆ WHERE αž“αž·αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αž”αŸ’αžšαžΎ JIT αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αžŠαŸ„αž™αžŸαžΆαžš 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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹