Κατά τη γνώμη μου, σε αντίθεση με τις προηγούμενες εκδόσεις, το PostgreSQL 12 δεν περιέχει ένα ή δύο επαναστατικά χαρακτηριστικά (όπως η κατάτμηση ή ο παραλληλισμός ερωτημάτων). Κάποτε αστειεύτηκα ότι το κύριο χαρακτηριστικό του PostgreSQL 12 είναι η μεγαλύτερη σταθερότητα. Αυτό δεν χρειάζεστε όταν διαχειρίζεστε τα κρίσιμα δεδομένα της επιχείρησής σας;
Αλλά το PostgreSQL 12 δεν σταματά εκεί: με νέες δυνατότητες και βελτιώσεις, οι εφαρμογές θα έχουν καλύτερη απόδοση, και το μόνο που χρειάζεται να κάνετε είναι να αναβαθμίσετε!
(Λοιπόν, ίσως να ξαναδημιουργηθούν τα ευρετήρια, αλλά σε αυτήν την έκδοση δεν είναι τόσο τρομακτικό όσο έχουμε συνηθίσει.)
Θα είναι υπέροχο να αναβαθμίσετε την PostgreSQL και να απολαύσετε αμέσως σημαντικές βελτιώσεις χωρίς περιττή φασαρία. Πριν από μερικά χρόνια, εξέτασα μια αναβάθμιση από PostgreSQL 9.4 σε PostgreSQL 10 και είδα πώς η εφαρμογή επιταχύνθηκε χάρη στον βελτιωμένο παραλληλισμό ερωτημάτων στο PostgreSQL 10. Και, το πιο σημαντικό, σχεδόν τίποτα δεν απαιτείται από εμένα (απλώς ορίστε μια παράμετρο διαμόρφωσης max_parallel_workers
).
Συμφωνώ, είναι βολικό όταν οι εφαρμογές λειτουργούν καλύτερα αμέσως μετά την αναβάθμιση. Και προσπαθούμε πολύ σκληρά να ευχαριστήσουμε τους χρήστες, γιατί η PostgreSQL έχει όλο και περισσότερους από αυτούς.
Πώς μπορεί λοιπόν μια απλή αναβάθμιση σε PostgreSQL 12 να σας κάνει ευτυχισμένους; Θα σου πω τώρα.
Σημαντικές βελτιώσεις ευρετηρίασης
Χωρίς ευρετηρίαση, μια βάση δεδομένων δεν θα πάει μακριά. Πώς αλλιώς μπορείτε να βρείτε γρήγορα πληροφορίες; Το θεμελιώδες σύστημα ευρετηρίου της PostgreSQL ονομάζεται
Απλώς χρησιμοποιούμε τον χειριστή CREATE INDEX ON some_table (some_column)
, και η PostgreSQL κάνει πολλή δουλειά για να διατηρεί το ευρετήριο ενημερωμένο, ενώ εισάγουμε, ενημερώνουμε και διαγράφουμε συνεχώς τιμές. Όλα λειτουργούν από μόνα τους, ως δια μαγείας.
Αλλά τα ευρετήρια PostgreSQL έχουν ένα πρόβλημα - αυτά
Το PostgreSQL 12 βελτιώνει σημαντικά την απόδοση των ευρετηρίων B-tree και πειράματα με σημεία αναφοράς όπως το TPC-C έχουν δείξει ότι κατά μέσο όρο χρησιμοποιείται πλέον 40% λιγότερος χώρος. Τώρα ξοδεύουμε λιγότερο χρόνο όχι μόνο για τη διατήρηση ευρετηρίων B-tree (δηλαδή για πράξεις εγγραφής), αλλά και για την ανάκτηση δεδομένων, επειδή τα ευρετήρια είναι πολύ μικρότερα.
Εφαρμογές που ενημερώνουν ενεργά τους πίνακές τους - συνήθως εφαρμογές OLTP (
Ορισμένες στρατηγικές αναβάθμισης απαιτούν την αναδόμηση ευρετηρίων B-tree για να επωφεληθούν από αυτά τα οφέλη (π.
Υπάρχουν άλλες βελτιώσεις στην υποδομή ευρετηρίασης στο PostgreSQL 12. Ένα άλλο πράγμα όπου υπήρχε κάποια μαγεία -
Το PostgreSQL 12 έχει μειώσει την επιβάρυνση των εγγραφών WAL που δημιουργούνται από τα ευρετήρια GiST, GIN και SP-GiST κατά την κατασκευή ευρετηρίου. Αυτό παρέχει πολλά απτά πλεονεκτήματα: οι εγγραφές WAL καταλαμβάνουν λιγότερο χώρο στο δίσκο και τα δεδομένα αναπαράγονται γρηγορότερα, όπως κατά τη διάρκεια της ανάκτησης από καταστροφή ή της ανάκτησης σε χρόνο σημείου. Εάν χρησιμοποιείτε τέτοια ευρετήρια στις εφαρμογές σας (για παράδειγμα, οι γεωχωρικές εφαρμογές που βασίζονται σε PostGIS χρησιμοποιούν πολύ το ευρετήριο GiST), αυτό είναι ένα άλλο χαρακτηριστικό που θα βελτιώσει σημαντικά την εμπειρία χωρίς καμία προσπάθεια εκ μέρους σας.
Διαμέριση - μεγαλύτερο, καλύτερο, πιο γρήγορο
Παρουσιάστηκε η PostgreSQL 10
Στο PostgreSQL 12, η απόδοση του συστήματος διαμερισμάτων έχει γίνει σημαντικά καλύτερη, ειδικά αν υπάρχουν χιλιάδες κατατμήσεις στον πίνακα. Για παράδειγμα, εάν ένα ερώτημα επηρεάζει μόνο μερικά διαμερίσματα σε έναν πίνακα με χιλιάδες από αυτά, θα εκτελεστεί πολύ πιο γρήγορα. Η απόδοση δεν βελτιώνεται μόνο για αυτούς τους τύπους ερωτημάτων. Θα παρατηρήσετε επίσης πόσο πιο γρήγορες είναι οι λειτουργίες INSERT σε πίνακες με πολλαπλά διαμερίσματα.
Καταγραφή δεδομένων με χρήση
Χάρη σε αυτά τα πλεονεκτήματα, η PostgreSQL σάς επιτρέπει να αποθηκεύετε ακόμη μεγαλύτερα σύνολα δεδομένων και να διευκολύνετε την ανάκτησή τους. Και καμία προσπάθεια από μέρους σας. Εάν η εφαρμογή έχει πολλά διαμερίσματα, όπως καταγραφή δεδομένων χρονοσειρών, μια απλή αναβάθμιση θα βελτιώσει σημαντικά την απόδοσή της.
Αν και αυτό δεν είναι ακριβώς μια βελτίωση "αναβάθμιση και απόλαυση", η PostgreSQL 12 σάς επιτρέπει να δημιουργείτε ξένα κλειδιά που αναφέρονται σε διαμερισμένους πίνακες, καθιστώντας τη διαμέριση ευχάριστη εργασία.
ΜΕ Ερωτήματα μόλις έγινε πολύ καλύτερο
Όταν
Συχνά διαπιστώνω ότι στους αρχάριους στην SQL λατρεύουν να χρησιμοποιούν CTE· αν τα γράψετε με έναν συγκεκριμένο τρόπο, είναι πραγματικά σαν να γράφετε ένα επιτακτική ανάγκη. Προσωπικά, μου άρεσε να ξαναγράφω αυτά τα ερωτήματα για να περιφέρομαι χωρίς CTE και αύξηση της παραγωγικότητας. Τώρα όλα είναι διαφορετικά.
Το PostgreSQL 12 σάς επιτρέπει να ενσωματώσετε έναν συγκεκριμένο τύπο CTE χωρίς παρενέργειες (SELECT
), το οποίο χρησιμοποιείται μόνο μία φορά κοντά στο τέλος του αιτήματος. Εάν παρακολουθούσα τα ερωτήματα CTE που έγραψα ξανά, τα περισσότερα από αυτά θα εμπίπτουν σε αυτήν την κατηγορία. Αυτό βοηθά τους προγραμματιστές να γράφουν καθαρό κώδικα που τώρα εκτελείται επίσης γρήγορα.
Επιπλέον, το PostgreSQL 12 βελτιστοποιεί την ίδια την εκτέλεση της SQL, χωρίς να χρειάζεται να κάνετε τίποτα. Και παρόλο που μάλλον δεν θα χρειαστεί να βελτιστοποιήσω τέτοια ερωτήματα τώρα, είναι υπέροχο που η PostgreSQL συνεχίζει να εργάζεται για τη βελτιστοποίηση ερωτημάτων.
Just-in-Time (JIT) - τώρα προεπιλογή
Σε συστήματα PostgreSQL 12 με υποστήριξη
Εφόσον το JIT είναι ενεργοποιημένο από προεπιλογή στο PostgreSQL 12, η απόδοση θα βελτιωθεί από μόνη της, αλλά συνιστώ να δοκιμάσετε την εφαρμογή στο PostgreSQL 11, το οποίο εισήγαγε το JIT, για να μετρήσετε την απόδοση του ερωτήματος και να δείτε αν χρειάζεται να συντονίσετε κάτι.
Τι γίνεται με τις υπόλοιπες νέες δυνατότητες στο PostgreSQL 12;
Το PostgreSQL 12 έχει πολλά νέα χαρακτηριστικά, από τη δυνατότητα εξέτασης δεδομένων JSON χρησιμοποιώντας τυπικές εκφράσεις διαδρομής SQL/JSON έως έλεγχο ταυτότητας πολλαπλών παραγόντων με μια παράμετρο clientcert=verify-full
, δημιούργησε στήλες και πολλά άλλα. Αρκετά για μια ξεχωριστή ανάρτηση.
Όπως το PostgreSQL 10, το PostgreSQL 12 θα βελτιώσει τη συνολική απόδοση αμέσως μετά την αναβάθμιση. Εσείς, φυσικά, μπορείτε να έχετε τη δική σας διαδρομή - δοκιμάστε την εφαρμογή υπό παρόμοιες συνθήκες στο σύστημα παραγωγής πριν ενεργοποιήσετε βελτιώσεις, όπως έκανα με το PostgreSQL 10. Ακόμα κι αν το PostgreSQL 12 είναι ήδη πιο σταθερό από ό,τι περίμενα, μην τεμπελιάζετε στις δοκιμές εφαρµογές διεξοδικά, πριν τις ελευθερώσουν στην παραγωγή.
Πηγή: www.habr.com