PostgreSQL izstrādātāju grupa paziņoja par PostgreSQL 12, jaunāko versiju atvērtā koda relāciju datu bāzu pārvaldības sistēmā.
PostgreSQL 12 ir ievērojami uzlabota vaicājumu veiktspēja - tas īpaši attiecas uz darbu ar lieliem datu apjomiem, kā arī optimizēta diska vietas izmantošana kopumā.
Starp jaunajām iespējām:
- JSON Path vaicājumu valodas īstenošana (būtiska SQL/JSON standarta sastāvdaļa);
- kopējo tabulu izteiksmju (WITH) izpildes optimizācija;
- atbalsts ģenerētajiem laukiem;
Kopiena turpina strādāt pie PostgreSQL paplašināmības un uzticamības, attīstot starptautisko atbalstu, autentifikācijas iespējas un nodrošinot vienkāršākas sistēmas administrēšanas ceļus.
Šajā laidienā ir iekļauta pievienojamo glabāšanas dzinēju saskarnes īstenošana, kas tagad ļauj izstrādātājiem izveidot savus datu glabāšanas paņēmienus.
Veiktspējas uzlabojumi
PostgreSQL 12 ietver būtiskus veiktspējas un apkopšanas procedūru uzlabojumus indeksēšanas un sektoriem.
B-tree indeksi - standarta indeksēšanas veids PostgreSQL - ir optimizēti 12. versijā slodzes gadījumā, kurā tiek veikti bieži indeksu labojumi. Izmantojot TPC-C standarta testu PostgreSQL 12, vidēji tika samazināts telpas patēriņš par 40% un vispārējā vaicājumu veiktspēja uzlabojās.
Vaicājumi uz sektorizētām tabulām ir guvuši ievērojamus uzlabojumus, īpaši tabulām, kas sastāv no tūkstošiem sekciju, ļaujot strādāt tikai ar ierobežotām datu masīvu daļām. Tika uzlabota datu pievienošanas veiktspēja sektorizētām tabulām, izmantojot INSERT un COPY, kā arī jaunas sekcijas pievienošana bez pieprasījumu bloķēšanas.
PostgreSQL 12 tika veikti papildu uzlabojumi indeksēšanā, kas ietekmē vispārējo veiktspēju, tostarp:
- WAL ģenerēšanas izmaksu samazināšana GiST, GIN un SP-GiST indeksa veidu gadījumā;
- iespēja veidot tā dēvētās seguma indeksus (covering indexes, piedāvājums INCLUDE) GiST indeksiem;
- iespēja veikt tuvāko kaimiņu vaicājumus (k-NN search) ar attāluma operatora (<->) un SP-GiST indeksu izmantošanu;
- atbalstu statistikas vākšanai par visizplatītākajiem vērtībām (most-common value, MCV) ar CREATE STATISTICS, kas palīdz iegūt labākus vaicājumu izpildes plānus, kad izmanto kolonnas, kuru vērtības ir nevienmērīgi izplatītas.
JIT kompilācija, izmantojot LLVM, kas parādījās PostgreSQL 11, tagad ir ieslēgta pēc noklusējuma. JIT kompilācija ļauj uzlabot sniegumu, strādājot ar izteiksmēm WHERE, mērķu sarakstiem, agregātiem un dažām iekšējām darbībām. Tā ir pieejama, ja esat kompilējis PostgreSQL ar LLVM vai izmantojat PostgreSQL paketi, kas tika izveidota ar iekļautu LLVM.
Uzlabojumi SQL valodas iespējām un saderībai ar standartiem
PostgreSQL 12 sniedz iespēju veikt vaicājumus uz JSON dokumentiem, izmantojot JSON ceļa izteiksmes, kas definētas SQL/JSON standartā. Šādi vaicājumi var izmantot esošās indeksēšanas mehānismus dokumentiem, kas glabājas JSONB formātā, efektīvai datu iegūšanai.
Common Table Expressions, pazīstami kā WITH vaicājumi, PostgreSQL 12 tagad automātiski var tikt izpildīti ar aizvietošanu, kas, savukārt, var palīdzēt uzlabot daudzu esošo vaicājumu sniegumu. Jaunajā versijā daļa WITH vaicājuma var tikt izpildīta ar aizvietošanu, ja tā nav rekursīva, tai nav blakus efektu un uz to atsaucas tikai vienu reizi turpmākajā vaicājumā.
PostgreSQL 12 ievieš atbalstu "ģenerētiem kolonnām". Šis kolonnu tips, kas aprakstīts SQL standartā, aprēķina vērtību, pamatojoties uz citu kolonnas saturu tajā pašā tabulā. Šajā PostgreSQL versijā tiek atbalstīti "uzglabātie ģenerētie kolonnas", kur aprēķinātā vērtība tiek glabāta diskā.
Internacionalizācija
PostgreSQL 12 paplašina atbalstu ICU salīdzinājumiem, ļaujot lietotājiem definēt "nedeterminētus salīdzinājumus", kas var, piemēram, ļaut salīdzināšanai bez burta lieluma vai akcenta.
Autentifikācija
PostgreSQL paplašina savu atbalstu uzticamām autentifikācijas metodēm ar vairākiem uzlabojumiem, kas nodrošina papildu drošību un funkcionalitāti. Šajā versijā ir ieviesta šifrēšana gan klienta, gan servera pusē autentifikācijai caur GSSAPI saskarnēm, kā arī PostgreSQL tagad var noteikt serverus LDAP, ja PostgreSQL ir kompilēts ar OpenLDAP.
Turklāt PostgreSQL 12 tagad atbalsta vairāku faktoru autentifikācijas variantu. Tagad PostgreSQL serveris var pieprasīt klientam sniegt derīgu SSL-sertifikātu ar atbilstošu lietotājvārdu, izmantojot clientcert=verify-full, un apvienot to ar atsevišķu autentifikācijas metodes prasību (piemēram, scram-sha-256).
Administrācija
PostgreSQL 12 ir iespējams veikt neblokējošu indeksu pārbūvi ar REINDEX CONCURRENTLY komandu. Tas ļauj lietotājiem izvairīties no dīkstāves datu bāzes vadības sistēmā ilgu indeksu pārbūves laikā.
Turklāt PostgreSQL 12 ir iespējams ieslēgt vai izslēgt lapu kontrolsummas klasterī, kas atrodas izslēgtā stāvoklī, izmantojot pg_checksums komandu. Agrāk lapu kontrolsummas - funkcija, kas palīdz pārbaudīt datu, kas tiek glabāti diskā, integritāti - varēja tikt ieslēgta tikai klastera PostgreSQL inicializācijas brīdī ar initdb.
Avots: linux.org.ru
