Paglabas ng PostgreSQL 14

Pagkatapos ng isang taon ng pag-develop, isang bagong stable na branch ng PostgreSQL 14 DBMS ang na-publish. Ang mga update para sa bagong branch ay ilalabas sa loob ng limang taon hanggang Nobyembre 2026.

Mga pangunahing inobasyon:

  • Nagdagdag ng suporta para sa pag-access ng data ng JSON gamit ang mga expression na tulad ng array: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE detalye['attributes']['size'] = '"medium"';

    Ang isang katulad na syntax ay ipinatupad para sa key/value data na ibinigay ng uri ng hstore. Ang syntax na ito ay unang ipinatupad gamit ang isang unibersal na balangkas, na sa hinaharap ay maaaring gamitin para sa iba pang mga uri. Halimbawa para sa uri ng hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); PUMILI ng h['a'] MULA sa mytable; I-UPDATE ang mytable SET h['c'] = 'bago';

  • Ang pamilya ng mga uri para sa pagtukoy ng mga saklaw ay pinalawak gamit ang mga bagong "multirange" na mga uri, na nagbibigay-daan sa iyong tukuyin ang mga nakaayos na listahan ng mga hindi magkakapatong na hanay ng mga halaga. Bilang karagdagan sa bawat umiiral na uri ng saklaw, ang sarili nitong uri ng multirange ay iminungkahi, halimbawa, ang uri na "int4range" ay tumutugma sa "int4multirange", at ang uri na "daterange" ay tumutugma sa "datemultirange". Ang paggamit ng mga bagong uri ay pinapasimple ang disenyo ng mga query na nagmamanipula ng mga kumplikadong pagkakasunud-sunod ng mga saklaw. PILIIN '{[3,7), [8,9)}'::int4multirange; PUMILI ng nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Ang mga pag-optimize ay ginawa upang mapabuti ang pagganap ng mga high-load system na nagpoproseso ng malaking bilang ng mga koneksyon. Sa ilang mga pagsubok, ang dalawang beses na pagtaas sa pagganap ay sinusunod.
  • Ang kahusayan ng mga index ng B-tree ay napabuti at ang problema sa paglago ng index kapag ang mga talahanayan ay madalas na ina-update ay nalutas na.
  • Nagdagdag ng suporta para sa panig ng kliyente (ipinatupad sa antas ng libpq) na mode ng paghahatid ng pipeline ng mga kahilingan, na nagbibigay-daan sa iyong makabuluhang pabilisin ang mga senaryo ng database na nauugnay sa pagsasagawa ng isang malaking bilang ng mga maliliit na operasyon sa pagsulat (INSERT/UPDATE/DELETE) sa pamamagitan ng pagpapadala ng susunod na kahilingan nang hindi naghihintay ng resulta ng nauna. Nakakatulong din ang mode na mapabilis ang trabaho sa mga koneksyon na may mahabang pagkaantala sa paghahatid ng packet.
  • Mga pinahusay na kakayahan para sa mga distributed na configuration na kinasasangkutan ng maraming PostgreSQL server. Sa pagpapatupad ng lohikal na pagtitiklop, posible na ngayong magpadala ng mga kasalukuyang transaksyon sa streaming mode, na maaaring makabuluhang mapabuti ang pagganap ng pagtitiklop ng malalaking transaksyon. Bilang karagdagan, ang lohikal na pag-decode ng data na natanggap sa panahon ng lohikal na pagtitiklop ay na-optimize.
  • Ang mekanismo para sa pagkonekta ng mga panlabas na talahanayan Foreign Data Wrapper (postgres_fdw) ay nagdagdag ng suporta para sa parallel na pagpoproseso ng query, na kasalukuyang naaangkop lamang kapag kumokonekta sa iba pang mga PostgreSQL server. Ang postgres_fdw ay nagdaragdag din ng suporta para sa pagdaragdag ng data sa mga panlabas na talahanayan sa batch mode at ang kakayahang mag-import ng mga naka-partition na talahanayan sa pamamagitan ng pagtukoy sa "IMPORT FOREIGN SCHEMA" na direktiba.
  • Ang mga pag-optimize ay ginawa sa pagpapatupad ng operasyon ng VACUUM (pagkolekta ng basura at pag-iimbak ng disk storage). Nagdagdag ng emergency cleanup mode na lumalaktaw sa mga di-mahahalagang operasyon ng paglilinis kung ang mga kundisyon ng wraparound ng transaction ID ay ginawa. Nabawasan ang overhead kapag nagpoproseso ng mga index sa B-Tree na format. Ang pagpapatupad ng "ANALYZE" na operasyon, na nangongolekta ng mga istatistika tungkol sa pagpapatakbo ng database, ay makabuluhang pinabilis.
  • Idinagdag ang kakayahang i-configure ang paraan ng compression na ginamit sa TOAST system, na responsable para sa pag-imbak ng malaking data, tulad ng mga bloke ng teksto o geometric na impormasyon. Bilang karagdagan sa pglz compression method, magagamit na ngayon ng TOAST ang LZ4 algorithm.
  • Ang mga tool para sa pagsubaybay sa pagpapatakbo ng DBMS ay pinalawak. Nagdagdag ng mga view upang subaybayan ang pag-usad ng COPY command (pg_stat_progress_copy), mga istatistika tungkol sa mga replication slot (pg_stat_replication_slots) at aktibidad na nauugnay sa WAL transaction log (pg_stat_wal). Naidagdag ang function na compute_query_id, na nagbibigay-daan sa iba't ibang mga subsystem, gaya ng pg_stat_activity at EXPLAIN VERBOSE, na subaybayan ang mga kahilingan sa pamamagitan ng pagtatalaga ng natatanging identifier para sa bawat kahilingan.
  • Ang mga pag-optimize ay idinagdag sa query planner upang mapabuti ang parallel processing ng mga query at mapabuti ang performance ng sabay-sabay na pagpapatupad ng sequential record scan operations, parallel execution ng mga query sa PL/pgSQL gamit ang command na "RETURN QUERY", at parallel execution ng mga query sa " REFRESH MATERIALIZED VIEW”. Para mapahusay ang performance ng cyclic nested merges (join), ipinatupad ang suporta para sa karagdagang caching.
  • Magagamit na ngayon ang mga advanced na istatistika para i-optimize ang mga expression, at magagamit na ngayon ang incremental sorting para i-optimize ang mga function ng window.
  • Sinusuportahan na ngayon ng mga nakaimbak na pamamaraan na nagbibigay-daan sa iyong pamahalaan ang mga transaksyon sa mga bloke ng code sa pagtukoy ng data ng pagbabalik gamit ang mga parameter na "OUT".
  • Idinagdag ang function ng date_bin sa pag-ikot ng mga halaga ng timestamp ayon sa isang tinukoy na agwat. PUMILI date_bin('15 minuto', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Nagdagdag ng mga SEARCH at CYCLE na expression na tinukoy sa pamantayan ng SQL upang gawing mas madali ang pag-order at pagtukoy ng mga cycle sa recursive Common Table Expressions (CTE). MAY RECURSIVE search_tree(id, link, data) BILANG ( PUMILI t.id, t.link, t.data MULA sa puno t UNION LAHAT PUMILI t.id, t.link, t.data MULA sa puno t, search_tree st SAAN t. id = st.link ) PAGHAHANAP MUNA NG id SET ordercol PUMILI * MULA sa search_tree ORDER NG ordercol;
  • Sa psql utility, ang autocompletion ng mga command na may mga tab ay napabuti, ang kakayahang magpakita ng mga argumento ng function ay idinagdag sa command na "\df", at ang mga ipinapakitang istatistika ay pinalawak sa command na "\dX".
  • Posibleng magtalaga ng read-only o write-only na mga pribilehiyo sa mga user. Maaaring itakda ang mga pribilehiyo sa mga indibidwal na talahanayan, view, at schema gamit ang pg_read_all_data at pg_write_all_data na paunang natukoy na mga tungkulin. MAGBIGAY ng pg_read_all_data SA user1;
  • Ang mga bagong pag-install ay default sa pagpapatunay ng password gamit ang SCRAM-SHA-256 sa halip na md5 (ang parameter na "password_encryption" kapag bumubuo ng postgresql.conf ay nakatakda na ngayon sa 'scram-sha-256').

Pinagmulan: opennet.ru

Magdagdag ng komento