Postgres Explain Cost

Postgres Explain Cost



Το Postgres είναι ένα ισχυρό και ευρέως χρησιμοποιούμενο σύστημα σχεσιακών βάσεων δεδομένων ανοιχτού κώδικα με ισχυρή φήμη για την ευρωστία, τη λειτουργικότητα και την απόδοσή του.

Ένα από τα εργαλεία που κάνουν το Postgres κυρίως ισχυρό σε απόδοση είναι η εντολή EXPLAIN που παρέχει λεπτομέρειες σχετικά με το σχέδιο εκτέλεσης ενός ερωτήματος SQL.

Τι είναι η εντολή EXPLAIN;

Η εντολή EXPLAIN εμφανίζει το σχέδιο εκτέλεσης που δημιουργεί ο προγραμματιστής PostgreSQL για μια δεδομένη πρόταση SQL.







Αυτό περιλαμβάνει πληροφορίες σχετικά με το εκτιμώμενο κόστος για την εκτέλεση κάθε βήματος ερωτήματος. Εξετάζοντας αυτά τα κόστη, μπορούμε να καταλάβουμε γιατί ένα ερώτημα εκτελείται αργά και πώς να το βελτιστοποιήσουμε.



Εξηγήστε το κόστος PostgreSQL

Χρησιμοποιούμε κυρίως την εντολή EXPLAIN για να ανακτήσουμε τις πληροφορίες σχετικά με ένα δεδομένο ερώτημα. Η εντολή εξάγει ορισμένες πληροφορίες σχετικά με το ερώτημα.



Πάρτε για παράδειγμα το ερώτημα που φαίνεται στο παρακάτω:





ΕΠΙΛΟΓΗ f.title, c.name
ΑΠΟ την ταινία f
JOIN film_category fc ON f.film_id = fc.film_id
ΕΓΓΡΑΦΕΙΤΕ στην κατηγορία c ON fc.category_id = c.category_id;

Αν εκτελέσουμε την εντολή εξηγήστε στην προηγούμενη απλή ένωση:

ΕΞΗΓΗΣΗ ΕΠΙΛΟΓΗ f.title, c.name
ΑΠΟ την ταινία f
JOIN film_category fc ON f.film_id = fc.film_id
ΕΓΓΡΑΦΕΙΤΕ στην κατηγορία c ON fc.category_id = c.category_id;

Θα πρέπει να λάβουμε την έξοδο όπως φαίνεται στο παρακάτω:



Ίσως παρατηρήσετε ότι για κάθε βήμα ερωτήματος, η PostgreSQL επιστρέφει το εκτιμώμενο κόστος αυτού του ερωτήματος.

  1. startup_cost – Δείχνει το εκτιμώμενο κόστος για την προετοιμασία της λειτουργίας πριν ξεκινήσει η έξοδος των σειρών.
  2. total_cost – Το συνολικό κόστος για την ανάκτηση όλων των σειρών.
  3. Γραμμές – Καθορίζει τον εκτιμώμενο αριθμό σειρών που επιστρέφονται από το ερώτημα.
  4. Width – Αυτό καθορίζει τον μέσο αριθμό byte όλων των σειρών που επιστρέφονται από τη λειτουργία.

Τα κόστη ερωτημάτων στη PostgreSQL υποδηλώνονται σε αυθαίρετες μονάδες που καθορίζονται από τις παραμέτρους κόστους που ορίζονται στη διαμόρφωση του διακομιστή.

Το κλειδί αυτών των παραμέτρων είναι το seq_page_cost, το οποίο ορίζει το κόστος μιας ανάκτησης σελίδας δίσκου που δεν βρίσκεται στη μνήμη cache.

Εάν βρίσκεστε στο pgAdmin, μπορείτε να χρησιμοποιήσετε τη λειτουργία 'explain analysis' για να λάβετε ένα πιο ευανάγνωστο και καλά παρουσιασμένο διάγραμμα για την εντολή εξηγήσεων. Για παράδειγμα:

Στη συνέχεια, μπορείτε να κάνετε κλικ σε κάθε βήμα για να δείτε τα στατιστικά στοιχεία και το εκτιμώμενο κόστος.

Βελτιστοποίηση των ερωτημάτων με βάση το κόστος

Όταν βελτιστοποιείτε τα ερωτήματά σας, είναι σημαντικό να κατανοήσετε ότι το χαμηλότερο κόστος συνήθως σημαίνει ταχύτερη εκτέλεση. Επομένως, μπορείτε να τροποποιήσετε τα ερωτήματά σας με χαμηλότερο κόστος.
Ακολουθούν ορισμένοι παράγοντες που πρέπει να λάβετε υπόψη:

Χρησιμοποιήστε τα ευρετήρια πινάκων – Τα ευρετήρια μειώνουν σημαντικά το κόστος των ερωτημάτων που βασίζονται στην αναζήτηση διατηρώντας μια δομή δεδομένων που επιτρέπει ταχύτερη αναζήτηση.

Χρησιμοποιήστε τις λειτουργίες και τους χειριστές με σύνεση – Η εκτίμηση κόστους για λειτουργίες και χειριστές δεν είναι πάντα ακριβής, καθώς το πραγματικό κόστος μπορεί να εξαρτάται σε μεγάλο βαθμό από τα συγκεκριμένα δεδομένα. Ως εκ τούτου, περιορίστε τη χρήση συναρτήσεων και πολύπλοκων τελεστών στο ελάχιστο.

συμπέρασμα

Εξερευνήσαμε την έννοια του κόστους σε μια εντολή PostgreSQL ANALYZE. Συζητήσαμε τι σημαίνει η έξοδος εντολών και πώς να χρησιμοποιήσουμε το κόστος παραγωγής για να αναλύσουμε τον πιο αποτελεσματικό τρόπο εκτέλεσης ενός δεδομένου ερωτήματος.