PostgreSQL 14 DBVS laidiens

Pēc gadu ilgas izstrādes ir publicēta jauna stabila PostgreSQL 14 DBVS filiāle. Jaunās filiāles atjauninājumi tiks izlaisti piecu gadu laikā līdz 2026. gada novembrim.

Galvenie jauninājumi:

  • Pievienots atbalsts piekļuvei JSON datiem, izmantojot masīvam līdzīgas izteiksmes: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"vidējs"';

    Līdzīga sintakse ir ieviesta atslēgas/vērtības datiem, ko nodrošina hstore veids. Šī sintakse sākotnēji tika ieviesta, izmantojot universālu ietvaru, kas nākotnē var tikt izmantots citiem veidiem. Hstore tipa piemērs: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'jauns';

  • Diapazonu definēšanas tipu saime ir papildināta ar jauniem “vairāku diapazonu” tipiem, kas ļauj norādīt sakārtotus sarakstus ar vērtību diapazoniem, kas nepārklājas. Papildus katram esošajam diapazona tipam tiek piedāvāts savs vairāku diapazonu tips, piemēram, tips “int4range” atbilst “int4multirange”, bet tips “daterange” atbilst “datemultirange”. Jaunu veidu izmantošana vienkāršo to vaicājumu izstrādi, kas manipulē ar sarežģītām diapazonu sekvencēm. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Ir veiktas optimizācijas, lai uzlabotu augstas slodzes sistēmu veiktspēju, kas apstrādā lielu savienojumu skaitu. Dažos testos tiek novērots divkāršs veiktspējas pieaugums.
  • Ir uzlabota B-koku indeksu efektivitāte un ir atrisināta problēma ar indeksu pieaugumu, kad tabulas tiek bieži atjauninātas.
  • Pievienots atbalsts klienta puses (īstenots libpq līmenī) konveijera pieprasījumu pārsūtīšanas režīmam, kas ļauj ievērojami paātrināt datu bāzes scenārijus, kas saistīti ar lielu skaitu mazu rakstīšanas darbību (INSERT/UPDATE/DELETE), nosūtot nākamo pieprasījumu, negaidot iepriekšējā pieprasījuma rezultātu. Šis režīms palīdz arī paātrināt darbu pie savienojumiem ar ilgu pakešu piegādes kavēšanos.
  • Uzlabotas iespējas sadalītām konfigurācijām, kas ietver vairākus PostgreSQL serverus. Ieviešot loģisko replikāciju, tagad ir iespējams nosūtīt notiekošos darījumus straumēšanas režīmā, kas var ievērojami uzlabot lielu transakciju replikācijas veiktspēju. Turklāt ir optimizēta loģiskās replikācijas laikā saņemto datu loģiskā dekodēšana.
  • Ārējo tabulu savienošanas mehānismam Foreign Data Wrapper (postgres_fdw) ir pievienots atbalsts paralēlai vaicājumu apstrādei, kas pašlaik ir piemērojams tikai, veidojot savienojumu ar citiem PostgreSQL serveriem. postgres_fdw arī pievieno atbalstu datu pievienošanai ārējām tabulām pakešu režīmā un iespēju importēt sadalītās tabulas, norādot direktīvu “IMPORT FOREIGN SCHEMA”.
  • Veikta optimizācija VACUUM darbības ieviešanā (atkritumu savākšana un diska uzglabāšanas iepakošana). Ir pievienots ārkārtas tīrīšanas režīms, kas izlaiž nebūtiskas tīrīšanas darbības, ja tiek izveidoti darījuma ID aptvēršanas nosacījumi. Samazinātas pieskaitāmās izmaksas, apstrādājot indeksus B-Tree formātā. Būtiski ir paātrināta operācijas “ANALĪZE” izpilde, kas apkopo statistiku par datu bāzes darbību.
  • Pievienota iespēja konfigurēt TOAST sistēmā izmantoto saspiešanas metodi, kas ir atbildīga par lielu datu, piemēram, teksta bloku vai ģeometriskās informācijas, uzglabāšanu. Papildus pglz saspiešanas metodei TOAST tagad var izmantot LZ4 algoritmu.
  • Ir paplašināti DBVS darbības uzraudzības instrumenti. Pievienoti skati, lai izsekotu COPY komandu norisei (pg_stat_progress_copy), statistikai par replikācijas slotiem (pg_stat_replication_slots) un darbībām, kas saistītas ar WAL darījumu žurnālu (pg_stat_wal). Ir pievienota funkcija compute_query_id, kas ļauj dažādām apakšsistēmām, piemēram, pg_stat_activity un EXPLAIN VERBOSE, izsekot pieprasījumus, katram pieprasījumam piešķirot unikālu identifikatoru.
  • Vaicājumu plānotājam ir pievienotas optimizācijas, lai uzlabotu vaicājumu paralēlo apstrādi un uzlabotu secīgu ierakstu skenēšanas darbību vienlaicīgu izpildi, paralēlu vaicājumu izpildi PL/pgSQL, izmantojot komandu “RETURN QUERY” un paralēlu vaicājumu izpildi programmā “ ATJAUNOT MATERIALIZĒTO SKATU”. Lai uzlabotu ciklisko ligzdoto sapludināšanas (pievienošanās) veiktspēju, ir ieviests atbalsts papildu kešatmiņai.
  • Uzlaboto statistiku tagad var izmantot, lai optimizētu izteiksmes, un pakāpenisku kārtošanu tagad var izmantot, lai optimizētu logu funkcijas.
  • Saglabātās procedūras, kas ļauj pārvaldīt darījumus koda blokos, tagad atbalsta atgriešanas datu definēšanu, izmantojot parametrus "OUT".
  • Pievienota funkcija date_bin, lai noapaļotu laika zīmoga vērtības atbilstoši noteiktam intervālam. SELECT date_bin('15 minūtes', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Pievienotas SEARCH un CYCLE izteiksmes, kas definētas SQL standartā, lai būtu vieglāk sakārtot un identificēt ciklus rekursīvajās kopējās tabulas izteiksmēs (CTE). AR REKURSĪVO meklēšanas_koku(id, saite, dati) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Psql utilītprogrammā ir uzlabota komandu automātiskā pabeigšana ar cilnēm, komandai “\df” ir pievienota iespēja parādīt funkciju argumentus, un parādītā statistika ir paplašināta līdz komandai “\dX”.
  • Lietotājiem ir iespējams piešķirt tikai lasīšanas vai rakstīšanas tiesības. Privilēģijas var iestatīt atsevišķām tabulām, skatiem un shēmām, izmantojot iepriekš definētas lomas pg_read_all_data un pg_write_all_data. GRANT pg_read_all_data lietotājam1;
  • Jaunās instalācijas pēc noklusējuma izmanto paroles autentifikāciju, izmantojot SCRAM-SHA-256, nevis md5 (parametrs “password_encryption”, ģenerējot postgresql.conf, tagad ir iestatīts uz “scram-sha-256”).

Avots: opennet.ru

Pievieno komentāru