Έκδοση PostgreSQL 15 DBMS

Μετά από ένα χρόνο ανάπτυξης, δημοσιεύτηκε ένας νέος σταθερός κλάδος του PostgreSQL 15 DBMS. Οι ενημερώσεις για το νέο κλάδο θα κυκλοφορήσουν σε διάστημα πέντε ετών έως τον Νοέμβριο του 2027.

Βασικές καινοτομίες:

  • Προστέθηκε υποστήριξη για την εντολή SQL "MERGE", η οποία μοιάζει με την έκφραση "INSERT ... ON CONFLICT". Το MERGE σάς επιτρέπει να δημιουργείτε εντολές SQL υπό όρους που συνδυάζουν τις λειτουργίες INSERT, UPDATE και DELETE σε μία μόνο έκφραση. Για παράδειγμα, χρησιμοποιώντας το MERGE, μπορείτε να συγχωνεύσετε δύο πίνακες εισάγοντας εγγραφές που λείπουν και ενημερώνοντας τις υπάρχουσες. MERGE INTO customer_account ca ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ τις πρόσφατα_συναλλαγές t ON t.customer_id = ca.customer_id ΟΤΑΝ ΑΝΤΙΣΤΟΙΧΙΖΕΤΑΙ ΤΟΤΕ ΕΝΗΜΕΡΩΣΗ ΣΕΤ υπόλοιπο = υπόλοιπο +transaction_value ΟΤΑΝ ΔΕΝ ΑΝΤΙΣΤΟΙΧΙΖΕΤΑΙ ΤΟΤΕ ΕΙΣΑΓΩΓΗ (customer_id, υπόλοιπο) VALUES (t.customer_action_tualue);
  • Οι αλγόριθμοι για την ταξινόμηση δεδομένων στη μνήμη και στο δίσκο έχουν βελτιωθεί σημαντικά. Ανάλογα με τον τύπο των δεδομένων, οι δοκιμές δείχνουν αύξηση της ταχύτητας ταξινόμησης από 25% σε 400%.
  • Οι συναρτήσεις παραθύρου που χρησιμοποιούν row_number(), rank(), dense_rank() και count() έχουν επιταχυνθεί.
  • Έχει υλοποιηθεί η δυνατότητα παράλληλης εκτέλεσης ερωτημάτων με την έκφραση “SELECT DISTINCT”.
  • Ο μηχανισμός σύνδεσης εξωτερικών πινάκων Foreign Data Wrapper (postgres_fdw) υλοποιεί υποστήριξη για ασύγχρονες δεσμεύσεις επιπλέον της προηγουμένως προστιθέμενης δυνατότητας για ασύγχρονη επεξεργασία αιτημάτων σε εξωτερικούς διακομιστές.
  • Προστέθηκε η δυνατότητα χρήσης αλγορίθμων LZ4 και Zstandard (zstd) για τη συμπίεση των αρχείων καταγραφής συναλλαγών WAL, τα οποία, υπό ορισμένους φόρτους εργασίας, μπορούν ταυτόχρονα να βελτιώσουν την απόδοση και να εξοικονομήσουν χώρο στο δίσκο. Για να μειωθεί ο χρόνος ανάκτησης μετά από μια αποτυχία, έχει προστεθεί υποστήριξη για προληπτική ανάκτηση σελίδων που εμφανίζονται στο αρχείο καταγραφής WAL.
  • Το βοηθητικό πρόγραμμα pg_basebackup έχει προσθέσει υποστήριξη για συμπίεση αρχείων αντιγράφων ασφαλείας από την πλευρά του διακομιστή χρησιμοποιώντας τις μεθόδους gzip, LZ4 ή zstd. Είναι δυνατό να χρησιμοποιήσετε τις δικές σας μονάδες για αρχειοθέτηση, επιτρέποντάς σας να το κάνετε χωρίς να χρειάζεται να εκτελέσετε εντολές φλοιού.
  • Μια σειρά από νέες συναρτήσεις έχουν προστεθεί για την επεξεργασία συμβολοσειρών χρησιμοποιώντας κανονικές εκφράσεις: regexp_count(), regexp_instr(), regexp_like() και regexp_substr().
  • Η δυνατότητα συνάθροισης τύπων πολλαπλών εύρους ("multirange") έχει προστεθεί στη συνάρτηση range_agg().
  • Προστέθηκε η λειτουργία security_invoker, η οποία σας επιτρέπει να δημιουργείτε προβολές που εκτελούνται ως ο καλών χρήστης και όχι ως ο δημιουργός της προβολής.
  • Για τη λογική αναπαραγωγή, έχει εφαρμοστεί υποστήριξη για το φιλτράρισμα σειρών και τον καθορισμό λιστών στηλών, επιτρέποντας από την πλευρά του αποστολέα να επιλέξει ένα υποσύνολο δεδομένων από τον πίνακα για αναπαραγωγή. Επιπλέον, η νέα έκδοση απλοποιεί τη διαχείριση διενέξεων, για παράδειγμα, είναι πλέον δυνατή η παράλειψη συναλλαγών σε διένεξη και η αυτόματη απενεργοποίηση μιας συνδρομής όταν εντοπιστεί κάποιο σφάλμα. Η λογική αναπαραγωγή επιτρέπει τη χρήση δεσμεύσεων δύο φάσεων (2PC).
  • Προστέθηκε μια νέα μορφή αρχείου καταγραφής - jsonlog, η οποία αποθηκεύει πληροφορίες σε δομημένη μορφή χρησιμοποιώντας τη μορφή JSON.
  • Ο διαχειριστής έχει τη δυνατότητα να εκχωρήσει μεμονωμένα δικαιώματα σε χρήστες για να αλλάξουν ορισμένες παραμέτρους διαμόρφωσης διακομιστή PostgreSQL.
  • Το βοηθητικό πρόγραμμα psql έχει προσθέσει υποστήριξη για την αναζήτηση πληροφοριών σχετικά με τις ρυθμίσεις (pg_settings) χρησιμοποιώντας την εντολή "\dconfig".
  • Η χρήση της κοινόχρηστης μνήμης διασφαλίζεται για τη συγκέντρωση στατιστικών στοιχείων σχετικά με τη λειτουργία του διακομιστή, γεγονός που καθιστά δυνατή την απαλλαγή από μια ξεχωριστή διαδικασία συλλογής στατιστικών στοιχείων και την περιοδική επαναφορά της κατάστασης στο δίσκο.
  • Έχει παρασχεθεί η δυνατότητα χρήσης των προεπιλεγμένων τοπικών ρυθμίσεων της ICU "Συλλογή ICU". Προηγουμένως, μόνο οι τοπικές ρυθμίσεις libc μπορούσαν να χρησιμοποιηθούν ως προεπιλεγμένες τοπικές ρυθμίσεις.
  • Έχει προταθεί μια ενσωματωμένη επέκταση pg_walinspect, η οποία σας επιτρέπει να επιθεωρείτε τα περιεχόμενα των αρχείων με αρχεία καταγραφής WAL χρησιμοποιώντας ερωτήματα SQL.
  • Για το δημόσιο σχήμα, όλοι οι χρήστες, με εξαίρεση τον κάτοχο της βάσης δεδομένων, έχουν ανακληθεί από την εξουσία εκτέλεσης της εντολής CREATE.
  • Η υποστήριξη για Python 2 έχει καταργηθεί στο PL/Python. Η απαρχαιωμένη λειτουργία αποκλειστικού αντιγράφου ασφαλείας έχει καταργηθεί.

Προσθήκη: Από τις 19:00 έως τις 20:00 (MSK) θα υπάρχει ένα διαδικτυακό σεμινάριο που θα συζητά τις αλλαγές στη νέα έκδοση με τον Pavel Luzanov (Postgres Professional). Για όσους δεν μπορούν να συμμετάσχουν στη μετάδοση, η ηχογράφηση της αναφοράς του Pavel Ιουνίου «PostgreSQL 15: MERGE and more» στο PGConf.Russia είναι ανοιχτή.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο