Lëshimi i DBMS PostgreSQL 18

Pas një vit zhvillimi, është publikuar dega e re stabile e sistemit të menaxhimit të bazave të dhënash PostgreSQL 18. Përditësimet për degen e re do të dalin për pesë vitet e ardhshme deri në nëntor 2030. Mbështetja për PostgreSQL 13.x, dega më e vjetër e mbështetur, do të përfundojë më 13 nëntor.

Novitetet kryesore:

  • ËshtĂ« shtuar nĂ«n-sistemi pĂ«r hyrje / dalje asinkrone, i cili lejon rritjen e kapacitetit tĂ« hyrjes / daljes dhe eliminimin e vonesave. PĂ«rveç zbatimit univers tĂ« AIO (io_method=worker) i cili Ă«shtĂ« nĂ« dispozicion nĂ« tĂ« gjitha platformat, i bazuar nĂ« ekzekutimin e disa proceseve pĂ«rpunuese (default 3), nĂ« Linux mund tĂ« aplikohet ndĂ«rfaqja pĂ«r hyrje / dalje asinkrone io_uring (io_method=io_uring), e mbĂ«shtetur qĂ« nga bĂ«rthama Linux 5.1. Hyrje / dalje asinkrone aktualisht pĂ«rdoret vetĂ«m pĂ«r tĂ« aceleruar kryerjen e disa operacioneve qĂ« lidhen me leximin e tĂ« dhĂ«nave nga sistema i skedarĂ«ve, si skanimi sekuencial, skanimi i hartĂ«s sĂ« indekseve dhe procesi i pastrimit (vacuum). NĂ« disa teste, pĂ«rdorimi i AIO çon nĂ« rritjen e performancĂ«s deri nĂ« 2-3 herĂ«. Operacionet e shkruar vazhdojnĂ« tĂ« kryhen nĂ« mĂ«nyrĂ« sinkrone pĂ«r tĂ« arritur kĂ«rkesat ACID.
  • ËshtĂ« implementuar optimizimi "skip scan" nĂ« indekset shumĂ«kolonale, i cili lejon qĂ« indeksi tĂ« pĂ«rdoret jo vetĂ«m pĂ«r verifikimin e kolonĂ«s sĂ« parĂ« tĂ« indeksuar dhe pĂ«r lidhjen e plotĂ« tĂ« kolonave, por gjithashtu pĂ«r pĂ«rpunimin e veçantĂ« tĂ« kolonave tĂ« tjera tĂ« indeksuara. PĂ«r shembull, mĂ« parĂ«, kur krijohej njĂ« indeks B-tree mbi kolonat "(status, date)", indeksi aplikohej vetĂ«m pĂ«r kĂ«rkesat qĂ« kontrollonin fushĂ«n "status" ose tĂ« dy fushat "status" dhe "date", ndĂ«rsa kur kontrollohej vetĂ«m fusha "date", bĂ«hej njĂ« skanimi i pĂ«rmbajtjes sĂ« tabelĂ«s. Rezhimi "skip scan" lejon qĂ« nĂ« disa raste tĂ« skanohet indeksi kur kĂ«rkohet vetĂ«m fusha "date". Kjo modalitet aplikohet vetĂ«m pĂ«r indeksat "B-tree" kur pĂ«rdoret njĂ« operator kushtor "=" mbi fushĂ«n e indeksuar, nĂ« situata kur fusha e munguar ka njĂ« numĂ«r tĂ« vogĂ«l vlerash tĂ« ndryshme (p.sh., optimizimi do tĂ« funksionojĂ« nĂ«se fusha e statusit "status" ka disa vlera fikse).
  • JanĂ« shtuar optimizime qĂ« pĂ«rdorin nĂ« mĂ«nyrĂ« mĂ« efikase indeksat pĂ«r kĂ«rkesat qĂ« pĂ«rmbajnĂ« konstrukte "OR" dhe "IN (...)" nĂ« bllokun "WHERE", si dhe qĂ« rrisin performancĂ«n e planifikimit dhe ekzekutimit tĂ« bashkimeve tĂ« tabelave (p.sh., Ă«shtĂ« pĂ«rshpejtuar kodi pĂ«r bashkimin e hash dhe Ă«shtĂ« lejuar pĂ«rdorimi i renditjes inkrementale gjatĂ« bashkimit tĂ« tabelave).
  • Shtuar pĂ«rkrahjen pĂ«r ndarjen nĂ« mĂ«nyrĂ« paralele tĂ« ndĂ«rtimit tĂ« indekseve GIN (Indeksi i Ngritur i PĂ«rgjithshĂ«m), tĂ« aplikuara pĂ«r indeksonin vlera tĂ« pĂ«rbĂ«rĂ«, siç janĂ« tabelat, dhe organizimin e kĂ«rkimit nĂ« tĂ« dhĂ«na tekstuale ose struktura JSON.
  • ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« krijuar pĂ«rfaqĂ«sime materializuese dhe çelĂ«sa pĂ«r sekcionimin e tabelave me indekse me karakteristikĂ«n "unique", qĂ« nuk pĂ«rdorin strukturĂ«n B-tree.
  • Rritur performanca e pĂ«rgjithshme e bllokimeve pĂ«r pyetje qĂ« punojnĂ« me numĂ«r tĂ« madh tabelash, si dhe janĂ« bĂ«rĂ« pĂ«rmirĂ«sime nĂ« pĂ«rpunimin e pyetjeve pĂ«r tabelat e ndara, duke pĂ«rshpejtuar filtĂ«rimin e seksioneve tĂ« papĂ«rdorura dhe operacionet e bashkimit (JOIN).
  • PĂ«rshpejtuar operacionet me tekst, si funksionet pĂ«rkthimi nĂ« tĂ« madhe/tĂ« vogĂ«l. Shtuar mĂ«nyra PG_UNICODE_FAST pĂ«r tĂ« pĂ«rshpejtuar marrjen parasysh tĂ« pronave tĂ« lokaliteteve tĂ« simboleve Unicode.
  • ËshtĂ« implementuar mundĂ«sia pĂ«r tĂ« ruajtur statistikat e planifikuesit tĂ« kĂ«rkesave pas pĂ«rditĂ«simit midis rilĂ«sh tĂ« rĂ«ndĂ«sishme tĂ« PostgreSQL. Kjo ndryshim lejon shmangien e ekzekutimit tĂ« operacionit me kĂ«rkesa tĂ« larta "ANALYZE" pas nisjes sĂ« versionit tĂ« ri, deri nĂ« pĂ«rfundimin e tĂ« cilit vĂ«rehet njĂ« rĂ«nien e performancĂ«s sĂ« DBMS.
  • ËshtĂ« rritur performanca e utilitarit pg_upgrade, i cili pĂ«rdoret pĂ«r automatizimin e kalimit nĂ« njĂ« version tĂ« ri tĂ« rĂ«ndĂ«sishĂ«m tĂ« PostgreSQL. Optimiza janĂ« veçanĂ«risht tĂ« dukshme gjatĂ« pĂ«rditĂ«simit tĂ« DB, qĂ« pĂ«rmbajnĂ« njĂ« numĂ«r tĂ« madh objektesh, si tabelat dhe sekuencat. PĂ«r tĂ« pĂ«rshpejtuar punĂ«n e pg_upgrade Ă«shtĂ« shtuar gjithashtu njĂ« flamur "—jobs N" pĂ«r tĂ« paraleluar kontrollin nĂ« N fije dhe njĂ« flamur "—swap" pĂ«r tĂ« zĂ«vendĂ«suar katalogĂ«t me tĂ« dhĂ«na nĂ« tĂ«rĂ«si pa vendosur lidhje, pa klonim dhe pa kopjuar skedarĂ«t.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r kolonat virtuale tĂ« gjeneruara, vlera e tĂ« cilave llogaritet gjatĂ« ekzekutimit tĂ« pyetjeve, pa u ruajtur nĂ« disk. NĂ« shprehjen «CREATE TABLE » pĂ«r kolonat e gjeneruara, nĂ«se Ă«shtĂ« specifikuar vetĂ«m fjala kyçe «GENERATED» pa sqarimin e tipit (STORED ose VIRTUAL), do tĂ« aplikohet varianti i ri si parazgjidhje nĂ« vend tĂ« realizimit tĂ« vjetĂ«r. NĂ« realizimin e vjetĂ«r, vlerat e gjeneruara krijoheshin gjatĂ« operacioneve «INSERT» ose «UPDATE» dhe ruheshin nĂ« disk pĂ«r pĂ«rdorim tĂ« mĂ«vonshĂ«m. Disavantazhi i kolonave virtuale tĂ« gjeneruara Ă«shtĂ« pamundĂ«sia pĂ«r t'i pĂ«rdorur ato nĂ« indekse, ndĂ«rsa avantazhi Ă«shtĂ« aftĂ«sia pĂ«r tĂ« kryer normalizimin dhe ndryshimin e tĂ« dhĂ«nave nĂ« flutur (relevant kur punoni me tĂ« dhĂ«nat JSON). Sa i pĂ«rket kolonave klasike tĂ« gjeneruara tĂ« ruajtura, nĂ« versionin e ri Ă«shtĂ« siguruar mbĂ«shtetje pĂ«r replikimin logjik pĂ«r to.
  • NĂ« komandat INSERT, UPDATE, DELETE dhe MERGE Ă«shtĂ« realizuar mundĂ«sia e daljes sĂ« vlerave tĂ« kaluara (OLD) dhe aktuelle (CURRENT) nĂ« shprehjen RETURNING. PĂ«r shembull, «UPDATE
 RETURNING WITH (OLD AS o, NEW AS n) o.*, n.*.»
  • ËshtĂ« shtuar funksioni uuidv7() pĂ«r gjenerimin e identifikuesve tĂ« rastĂ«sishĂ«m unikĂ« nĂ« formatin UUIDv7. Ndryshe nga funksioni i mĂ«parshĂ«m pĂ«r gjenerimin e UUID (gen_random_uuid), i cili tani Ă«shtĂ« gjithashtu nĂ« dispozicion me emrin uuidv4(), nĂ« UUIDv7 pĂ«rveç vlerĂ«s sĂ« rastĂ«sishme pĂ«rfshihet edhe koha e gjenerimit. Prania e pjesĂ«ve tĂ« renditura nĂ« vlerĂ«n UUID (12 karakteret e parĂ« — koha epokale, dhe 18 karakteret e mbetura — vlera e rastĂ«sishme) e rrit efikasitetin e renditjes dhe indekset, e cila Ă«shtĂ« relevante pasi UUID zakonisht pĂ«rdoren pĂ«r çelĂ«sat e parĂ« (pĂ«r shembull, çelĂ«sat e krijuar nĂ« njĂ« kohĂ« tĂ« afĂ«rt vendosen afĂ«r njĂ«ri-tjetrit nĂ« indeks).
  • NĂ« operacionin «LIKE» Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r krahasimet me tekstin, nĂ« tĂ« cilat pĂ«rdoren pronĂ«si tĂ« padeterminueshme tĂ« lokalitetit «collation», duke lejuar qĂ« tĂ« kryhen krahasime duke marrĂ« parasysh kuptimin e simboleve (pĂ«r shembull, gjatĂ« krahasimit mund tĂ« mos merret parasysh shenja e theksit). ËshtĂ« shtuar funksioni CASEFOLD pĂ«r tĂ« ndryshuar rastin e simboleve duke marrĂ« parasysh pronĂ«sitĂ« e lokalitetit «collation» (pĂ«r shembull, disa simbole kanĂ« mĂ« shumĂ« se dy variante tĂ« vogla ose gjatĂ« krahasimit kĂ«rkojnĂ« transformim nĂ« tĂ« madh, e jo nĂ« tĂ« vogĂ«l).
  • ËshtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« kufizimeve temporale. NĂ« vlerat "PRIMARY KEY" dhe "UNIQUE" pĂ«r shtimin e kufizimeve temporale duhet tĂ« pĂ«rdoret shprehja "WITHOUT OVERLAPS", ndĂ«rsa nĂ« vlerĂ«n "FOREIGN KEY" — shprehja PERIOD. PĂ«r shembull, kur pĂ«rcaktohen çelĂ«sat primarĂ«, Ă«shtĂ« e mundur tĂ« kufizohen çelĂ«sat me intervale kohore tĂ« mbivendosura.
  • ËshtĂ« shtuar komanda "CREATE FOREIGN TABLE 
 LIKE command" pĂ«r krijimin e skemĂ«s sĂ« njĂ« tabele tĂ« jashtme nĂ« bazĂ« tĂ« pĂ«rcaktimit tĂ« njĂ« tabele lokale.
  • Shtuar mbĂ«shtetje pĂ«r lidhen nĂ« DBMS duke pĂ«rdorur autentifikimin me OAUTH 2.0 duke aplikuar njĂ« token akses nĂ« vend tĂ« fjalĂ«kalimit. PĂ«rdorimi i OAUTH lejon qĂ« tĂ« mos ruajmĂ« fjalĂ«kalimet nĂ« DB, por tĂ« identifikojmĂ« pĂ«rdoruesit pĂ«rmes shĂ«rbimeve tĂ« jashtme, si dhe tĂ« pĂ«rdorim mundĂ«si tĂ« tilla si autentifikimi me dy faktorĂ« dhe pika e vetme e hyrjes (SSO).
  • Shtuar funksionin ssl_tls13_ciphers(), pĂ«rmes tĂ« cilit mund tĂ« pĂ«rcaktohet lista e algoritmeve tĂ« enkriptimit tĂ« lejuar pĂ«r lidhjen duke pĂ«rdorur protokollin TLSv1.3.
  • MbĂ«shtetje pĂ«r autentifikimin duke pĂ«rdorur algoritmin md5 pĂ«r hashimin e fjalĂ«kalimeve Ă«shtĂ« kaluar nĂ« kategorinĂ« e vjetruar dhe tĂ« planifikuar pĂ«r heqje. NĂ« vend tĂ« md5, rekomandohet pĂ«rdorimi i algoritmit SCRAM (SCRAM-SHA-256), i cili ka dalĂ« nĂ« PostgreSQL 10. Gjithashtu, Ă«shtĂ« vĂ«nĂ« nĂ« dukje zbatimi i mbĂ«shtetjes pĂ«r pĂ«rçimin e autentifikimit nĂ« bazĂ« tĂ« SCRAM kur lidhemi pĂ«rmes postgres_fdw dhe dblink nĂ« servera tĂ« jashtĂ«m PostgreSQL.
  • GjatĂ« ekzekutimit tĂ« operacionit "EXPLAIN ANALYZE" Ă«shtĂ« siguruar dalja e informacionit mbi numrin e operacioneve tĂ« kĂ«rkimeve nĂ« indekse gjatĂ« skanimit tĂ« indekseve dhe numrit tĂ« referimeve nĂ« bufe gjatĂ« ekzekutimit tĂ« kĂ«rkesĂ«s. NĂ« daljen "EXPLAIN ANALYZE VERBOSE" Ă«shtĂ« pĂ«rfshirĂ« statistika mbi CPU, WAL-logun dhe intensitetin e operacioneve tĂ« leximit. NĂ« tabelĂ«n pg_stat_all_tables janĂ« shtuar tĂ« dhĂ«na mbi kohĂ«n e shpenzuar pĂ«r operacionin VACUUM dhe analizĂ«n e tabelave. ËshtĂ« ofruar statistika mbi intensitetin e hyrjes/daljes dhe ngarkesĂ«n mbi WAL-logun sipas lidhjeve tĂ« veçanta. NĂ« pg_stat_subscription_stats dhe nĂ« log janĂ« shtuar informacione me diagnostikimin e konflikteve gjatĂ« ekzekutimit tĂ« operacioneve tĂ« shkruarjes gjatĂ« replikimit logjik.
  • NĂ« instalimet e reja pĂ«rdorimi i kontrolleve tĂ« shumave pĂ«r verifikimin e integritetit tĂ« tĂ« dhĂ«nave tĂ« ruajtura Ă«shtĂ« pĂ«rfshirĂ« si parazgjedhje. PĂ«r tĂ« anuluar kĂ«tĂ« sjellje gjatĂ« nisjes sĂ« initdb duhet tĂ« specifikohet opsioni "—no-data-checksums".
  • NĂ« utilitarin pg_createsubscriber Ă«shtĂ« shtuar flag-u "—all" pĂ«r tĂ« krijuar replikat logjike njĂ«herĂ«sh pĂ«r tĂ« gjitha DB-tĂ«.
  • ËshtĂ« realizuar njĂ« version i ri (3.2) i protokollit, i pĂ«rdorur pĂ«r ndĂ«rveprimin e mjeteve tĂ« jashtme me DBMS-nĂ« dhe i realizuar nĂ« bibliotekĂ«n libpq. PĂ«rditĂ«simi i fundit i protokollit u krye nĂ« PostgreSQL 7.4 (viti 2003). NĂ« bibliotekĂ«n libpq vazhdon tĂ« pĂ«rdoret si version default versioni 3.0.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster