Մեկ տարվա զարգացման արդյունքում հրապարակվեց PostgreSQL 17 տվյալների բազայի նոր կայուն शाखան: Նոր շղթայի թարմացումները դուրս կգան հինգ տարի շարունակ մինչև 2029 թվականի նոյեմբեր: PostgreSQL 12.x-ի, աջակցվող ամենահին շղթայի, աջակցությունը կավարտվի 14 նոյեմբերի:
Կարևոր նորույթները:
- VACUUM (նախաճնչման հավաքում, մաքրում և սկավառակի պահեստավորման փաթեթավորում) գործողության իրականացման ընթացքում օգտագործվում է նոր տվյալների կառուցվածք, որը պահանջում է մինչև 20 անգամ ավելի քիչ հիշողություն: Նոր կառուցվածքի անցումը թույլ տվեց արագացնել VACUUM գործողությունների իրականացումը և նվազեցնել ընդհանուր ռեսուրսների սպառումը:
- Մ devamպես շարունակվեց մուտքային/հելային գործունեության արդյունավետության օպտիմизация: Ներկրված է հավելվածային պատճենային գրքույկի WAL մշակման համար կոդի բարելավում, որը թույլ է տվել կրկնապատկել գրանցման գործողությունների ունակությունը մեծ թվով առկա հարցումների համակարգերում: Ներդրվել է նոր թափանցիկ մուտքային/հելային接口, որը թույլ է տվել մեծացնել տվյալների հաջորդական ուսումնասիրության արագությունը և արագացնել ստատիստիկայի թարմացումը հարցման պլանավորիչի համար ANALYZE գործողությունից հետո:
- Ավելի բարձրացվել է IN արտահայտությամբ հարցումների արդյունավետությունը, եթե տվյալներում օգտագործվում են B-tree կառուցվածքի վրա հիմնված ինդեքսներ: Կիրառվել է BRIN (Block Range Index) ինդեքսների զույգերի կառուցման հնարավորություն: Հարցման պլանավորիչում օպտիմիզացվել են NOT NULL ստուգումները և արագացվել են «Common Table Expression» (CTE) SQL հրամանի միջոցով սահմանված ընդհանուր դինամիկ հարցումների մշակում: Նեմոք է կիրառվել վեկտորային պրոցեսորային հրահանգների (SIMD) օգտագործումը որոշ հաշվարկների արագացման համար, օրինակ, bit_count ֆունկցիայի արագացման համար օգտագործված են AVX-512 հրահանգներ:
- Ներդրվել են նոր հնարավորություններ JSON ձևաչափի հետ աշխատանքի համար, որոնք սահմանված են SQL/JSON ստանդարտում: Ավելացված է JSON-TABLE ֆունկցիա JSON ձևաչափից PostgreSQL սովորական խաղողի մեջ տվյալների տեղափոխման համար, ինչպես նաև նոր jsonpath օպերատորներ JSON տվյալների փոխակերպման համար PostgreSQL-ի բնիկ տվյալների ձևաչափերի: Ներդրվել են նոր ֆունկցիաներ JSON (JSON, JSON_SCALAR և JSON_SERIALIZE) ստեղծման և JSON (JSON_EXISTS, JSON_QUERY և JSON_VALUE) տվյալների հարցման համար:
- Վերարտադրման հնարավորությունները ընդլայնվել են SQL «MERGE» հրամանի միջոցով, որը թույլ է տալիս ստեղծել պայմանական SQL արտահայտություններ, որոնք միավորում են INSERT, UPDATE և DELETE գործողությունները: Ավելացված է RETURNING արտահայտության աջակցություն, որը թույլ է տալիս հաշվարկել և վերադարձնել արժեքները ավելացված, թարմացված կամ ջնջված տողերի հիման վրա: Ներդրվում է ներկայացումների թարմացման աջակցությունը:
- Տվյալների բեռնման և արտահանման հնարավորությունները բարձրացել են խմբային ռեժիմով: COPY հրամանի արագությունը մեծ տողերի արտահանման համար կրկնապատկվել է, օպտիմիզացվել է պատճենացումը սկզբնական և թիրախային կոդավորման համընկնող պայմաններում, ավելացվել է ON_ERROR հնարավորությունը, որը թույլ է տալիս շարունակել ներմուծումը տվյալների ներթափանցման ընթացքում սխալների դեպքում:
- Առանձին աղյուսակների համար ավելացավ կարողությունը օգտագործել յուրահատուկ նույնականացումներ պարունակող սյուներ և աջակցություն «Constraint exclusion» հարցերի օպտիմացման տեխնիկա։
- Արտաքին աղյուսակներ միացնելու Foreign Data Wrapper (postgres_fdw) մեխանիզմում իրականացվել է հնարավորության փոխանցումը դեպի արտաքին սերվեր արդյունքներ «EXISTS» և «IN։
- Ձեռք է բերվել հեշտ գործունակ платформայի վրա անկախ շարժիչ, որն օգտագործվում է «Collation» տեղային հատկությունների մշակման համար, որոնք սահմանում են դասավորության և համեմատության կանոնները՝ հաշվի առնելով նշանների իմաստը (օրինակ՝ թվային արժեքների դասավորության դեպքում հաշվի է առնվում բացասական նշանի և կետի առկայությունը և տարբեր ձևերի գրություն, իսկ համեմատության դեպքում նշանների գրանցման տերմինները հաշվի չեն առնվում): Նոր շարժիչը ապահովում է տիպական վարքագիծ հարցերի արդյունքների դասավորության մեջ, անկախ նրանից, թե որ պլատֆորմային է іске բոլոր PostgreSQL։
- Լոգիկական կրկնօրինակի մեխանիզմում, որը թույլ է տալիս այլ սերվերի թողարկել տվյալների բազաներում կատարած փոփոխությունները՝ ժամկետ ավելացնելիս, հեռացնելիս կամ թարմացնելիս, պարզեցվել է տվյալների պահպանման գործընթացը: Եթե նախկինում նոր կարևոր թողարկման անցնում էր անհրաժեշտ էր ջնջել լոգիկական կրկնօրինակման դրսևորման սնունդը և կրկին սինխոնիզացնել տվյալները, հիմա կարելի է հանում առանց ջնջման: Ամենահուսալի կառույցների համար մատակարարվում է բլոկի սերվերին փոխարկելու կառավարման հնարավորությունը (failover) լոգիկական կրկնօրինակման համար: Մեծացվել է նոր pg_createsubscriber գործիքը, որը ոլորտում տեղափոխում է ֆիզիկական կրկնօրինակը նոր լոգիկական կրկնօրինակի:
- Ավելացել է նոր «sslnegotiation» ընտրանք ուղղակի TLS կցորդելուն՝ TLS-երկարացման ALPN օգտագործելով:
- Հանձնվել է նախադրյալ pg_maintain դեր, որն ապահովում է օգտատիրոջ իրավունք կատարելու պահեստացման շղթայի հետ կապված գործողություններ:
- pg_basebackup գործարկվող ծրագրում, որը կիրառվում է տվյալների բազաների պահեստային պատճենիր ստեղծման համար, ավելացնել կոմպլեքսային պահեստային պատճեն դեռ կանաչ բասկիպես։ Զգացվում է՝ նախնական արտոնությունների պահանջով՝ pg_combinebacku նոր գործիքը առաջարկում է վերականգնել ամբողջական պահեստային պատճեն ՝ համակցված կոմպլեքսային պատճենից։ pg_dump գործիքում ավելացել է «—filter» ընտրանքը, որը թույլ է տալիս ընտրել դանդաղաբերով օբյեկտները քիմիկ պատրաստելու համար:
- SQL «EXPLAIN» հրամանով հարցերի վերլուծության ընթացքում ներդրվել է թվային ընթերցելու և գրելու տեղական բլոկների համար ծախսված ժամկետը ելք: «EXPLAIN» հրամանով ևս ավելացվել են երկու նոր ընտրանք «MEMORY» և «SERIALIZE», որոնց միջոցով կարելի է որոշել օգտագործված հիշողության չափը և տվյալների փոփոխության ժամանակը ցանցով փոխանցման համար:
- VACUUM գործողության ընթացքի առաջացվել է ցուցակ, որը ցույց է տալիս իմաստավորված գործելությունների առաջացմանը, ներառյալ ինդեքսները:
- Ավելացված է համակարգային պատկերում pg_wait_events, որը համատեղեց pg_stat_activity պատկերում դեպի առավել մանրամասն ուսումնասիրություն սպասման կացություններին ակտիվ թ.Session-ում:
Ընտանիք: opennet.ru
