рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, рдЕрдШрд┐рд▓реНрд▓реЛ рд╡рд┐рдореЛрдЪрдирд╣рд░реВрдХреЛ рд╡рд┐рдкрд░реАрдд, PostgreSQL 12 рд▓реЗ рдПрдХ рд╡рд╛ рджреБрдИрд╡рдЯрд╛ рдХреНрд░рд╛рдиреНрддрд┐рдХрд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрди (рдЬрд╕реНрддреИ рд╡рд┐рднрд╛рдЬрди рд╡рд╛ рдХреНрд╡реЗрд░реА рд╕рдорд╛рдирд╛рдиреНрддрд░)ред рдореИрд▓реЗ рдПрдХ рдкрдЯрдХ рдардЯреНрдЯрд╛ рдЧрд░реЗрдВ рдХрд┐ PostgreSQL 12 рдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдареВрд▓реЛ рд╕реНрдерд┐рд░рддрд╛ рд╣реЛред рддрдкрд╛рдИрд▓реЗ рдЖрдлреНрдиреЛ рд╡реНрдпрд╡рд╕рд╛рдпрдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрджрд╛ рддрдкрд╛рдИрд▓рд╛рдИ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди?
рддрд░ PostgreSQL 12 рддреНрдпрд╣рд╛рдБ рд░реЛрдХрд┐рджреИрди: рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕реБрдзрд╛рд░рд╣рд░реВрдХреЛ рд╕рд╛рде, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗрдЫ, рд░ рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛ!
(рдареАрдХ рдЫ, рд╣реБрдирд╕рдХреНрдЫ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрд░ рдпрд╕ рд╡рд┐рдореЛрдЪрдирдорд╛ рдпреЛ рдбрд░рд▓рд╛рдЧреНрджреЛ рдЫреИрди рдЬрд╕реНрддреЛ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХрд╛ рдЫреМрдВред)
PostgreSQL рдЕрдкрдЧреНрд░реЗрдб рдЧрд░реНрди рд░ рддреБрд░реБрдиреНрддреИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧрдбрдмрдб рдмрд┐рдирд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░рд╣рд░реВрдХреЛ рдЖрдирдиреНрдж рд▓рд┐рди рдпреЛ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реБрдиреЗрдЫред рдХреЗрд╣рд┐ рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ, рдореИрд▓реЗ PostgreSQL 9.4 рдмрд╛рдЯ PostgreSQL 10 рдорд╛ рдЕрдкрдЧреНрд░реЗрдбрдХреЛ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реЗрдВ рд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ 10 рдорд╛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдХреНрд╡реЗрд░реА рд╕рдорд╛рдирд╛рдиреНрддрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрд╕рд░реА рдЧрддрд┐ рд▓рд┐рдпреЛ рднрдиреЗрд░ рджреЗрдЦреЗред рд░, рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛, рдордмрд╛рдЯ рд▓рдЧрднрдЧ рдХреЗрд╣рд┐ рдЖрд╡рд╢реНрдпрдХ рдерд┐рдПрди (рдХреЗрд╡рд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред max_parallel_workers
).
рд╕рд╣рдордд рд╣реБрдиреБрд╣реЛрд╕реН, рдЕрдкрдЧреНрд░реЗрдб рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рдпреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реБрдиреНрдЫред рд░ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЦреБрд╕реА рдкрд╛рд░реНрди рдзреЗрд░реИ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫреМрдВ, рдХрд┐рдирдХрд┐ PostgreSQL рд╕рдБрдЧ рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдзреЗрд░реИ рдЫрдиреНред
рддреНрдпрд╕реЛрднрдП рдХрд╕рд░реА PostgreSQL 12 рдорд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрддрд░рд╡реГрджреНрдзрд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЦреБрд╢реА рдмрдирд╛рдЙрди рд╕рдХреНрдЫ? рдЕрдм рдо рднрдиреНрдЫреБред
рдкреНрд░рдореБрдЦ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕реБрдзрд╛рд░рд╣рд░реВ
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрд┐рдирд╛, рдбрд╛рдЯрд╛рдмреЗрд╕ рдЯрд╛рдврд╛ рдЬрд╛рди рд╕рдХреНрджреИрдиред рддрдкрд╛рдИрдВ рдХрд╕рд░реА рдЫрд┐рдЯреЛ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? PostgreSQL рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкреНрд░рдгрд╛рд▓реА рднрдирд┐рдиреНрдЫ
рд╣рд╛рдореА рдХреЗрд╡рд▓ рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВ CREATE INDEX ON some_table (some_column)
, рд░ PostgreSQL рд▓реЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд▓рд╛рдИ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдХрд╛рдо рдЧрд░реНрджрдЫ рдЬрдмрд╕рдореНрдо рд╣рд╛рдореА рдирд┐рд░рдиреНрддрд░ рдорд╛рдирд╣рд░реВ рд╕рдореНрдорд┐рд▓рд┐рдд, рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ, рд░ рдореЗрдЯрд╛рдЙрдБрдЫреМрдВред рд╕рдмреИ рдХреБрд░рд╛ рдЖрдлреНрдиреИ рдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рдЬрд╕реНрддреИ рдЬрд╛рджреВ рджреНрд╡рд╛рд░рд╛ред
рддрд░ PostgreSQL рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрдорд╛ рдПрдЙрдЯрд╛ рд╕рдорд╕реНрдпрд╛ рдЫ - рддрд┐рдиреАрд╣рд░реВ
PostgreSQL 12 рд▓реЗ B-tree indexes рдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рдзреЗрд░реИ рд╕реБрдзрд╛рд░ рдЧрд░реНрдЫ, рд░ TPC-C рдЬрд╕реНрддрд╛ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВрдХрд╛ рдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рдФрд╕рддрдорд╛ 40% рдХрдо рдард╛рдЙрдБ рдкреНрд░рдпреЛрдЧ рднрдПрдХреЛ рджреЗрдЦрд╛рдПрдХреЛ рдЫред рдЕрдм рд╣рд╛рдореА B-tree рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ (рдЕрд░реНрдерд╛рдд, рд▓реЗрдЦрди рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛) рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдорд╛рддреНрд░ рдирднрдИ рдбреЗрдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдорд╛ рдкрдирд┐ рдХрдо рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдЫреМрдВ, рдХрд┐рдирднрдиреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдзреЗрд░реИ рд╕рд╛рдиреЛ рдЫрдиреНред
рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЬрд╕рд▓реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджрдЫ - рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ OLTP рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ (
рдХреЗрд╣реА рд╕реНрддрд░рд╡реГрджреНрдзрд┐ рд░рдгрдиреАрддрд┐рд╣рд░реВрд▓реЗ рдпреА рдлрд╛рдЗрджрд╛рд╣рд░реВрдХреЛ рдлрд╛рдЗрджрд╛ рд▓рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ B-рдЯреНрд░реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдЬрд╕реНрддреИред
PostgreSQL 12 рдорд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рдЕрдиреНрдп рд╕реБрдзрд╛рд░рд╣рд░реВ рдЫрдиреНред рдЕрд░реНрдХреЛ рдХреБрд░рд╛ рдЬрд╣рд╛рдБ рдХреЗрд╣реА рдЬрд╛рджреВ рдерд┐рдпреЛ -
PostgreSQL 12 рд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдХреНрд░рдордорд╛ GiST, GIN, рд░ SP-GiST рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ WAL рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рдУрднрд░рд╣реЗрдб рдШрдЯрд╛рдПрдХреЛ рдЫред рдпрд╕рд▓реЗ рдзреЗрд░реИ рдареЛрд╕ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ: 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 рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛
PostgreSQL 12 рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ JIT рд╕рдХреНрд╖рдо рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдЖрдлреИрдорд╛ рд╕реБрдзрд╛рд░ рд╣реБрдиреЗрдЫ, рддрд░ рдо рд╕реЛрдзреНрдЫреБ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ 11 рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рд▓реЗ JIT рдкреЗрд╢ рдЧрд░реНтАНрдпреЛ, рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдорд╛рдкрди рдЧрд░реНрди рд░ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдХреЗрд╣рд┐ рдЯреНрдпреБрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдЫреИрди рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред
PostgreSQL 12 рдорд╛ рдмрд╛рдБрдХреА рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд╣реБрдиреНрдЫ?
PostgreSQL 12 рдорд╛ рдПрдХ рдЯрди рдЙрддреНрдХреГрд╖реНрдЯ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН, рдорд╛рдирдХ SQL/JSON рдорд╛рд░реНрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ JSON рдбреЗрдЯрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рджреЗрдЦрд┐ рд▓рд┐рдПрд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд╕рд╛рде рдмрд╣реБ-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдореНрдоред clientcert=verify-full
, рд╕реНрддрдореНрднрд╣рд░реВ рд░ рдЕрдзрд┐рдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдпреЛред рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд╛рдЧреА рдкрд░реНрдпрд╛рдкреНрдд рдЫред
PostgreSQL 10 рдЬрд╕реНрддреИ, PostgreSQL 12 рд▓реЗ рдЕрдкрдЧреНрд░реЗрдб рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗрдЫред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдорд╛рд░реНрдЧ рд╣реБрди рд╕рдХреНрдЫ - рд╕реБрдзрд╛рд░рд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕рдорд╛рди рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕реНрддреИ рдореИрд▓реЗ PostgreSQL 10 рд╕рдБрдЧ рдЧрд░реЗрдВред рдпрджрд┐ PostgreSQL 12 рдкрд╣рд┐рд▓реЗ рдиреИ рдореИрд▓реЗ рд╕реЛрдЪреЗ рднрдиреНрджрд╛ рдмрдвреА рд╕реНрдерд┐рд░ рдЫ рднрдиреЗ, рдкрд░реАрдХреНрд╖рдгрдорд╛ рдЕрд▓реНрдЫреА рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЙрддреНрдкрд╛рджрдирдорд╛ рд░рд┐рд▓рд┐рдЬ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд░рд╛рдореНрд░рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВред
рд╕реНрд░реЛрдд: www.habr.com