Πόσα SQL queries είναι πολλά?

Γενικές συζητήσεις για SQL και SQL Servers (RDBMS)

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
sibas
Honorary Member
Δημοσιεύσεις: 1856
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από sibas » 16 Ιουν 2011 10:28

Γεια χαρά
ένας φίλος έχει φτιάξει ένα custom πρόγραμμα και σε μερικά τεστ που του έκανα (localhost) ανακάλυψα ότι σε κάθε κλικ σε οποιαδήποτε σελίδα τα SQL queries είναι πάνω από 1200, δηλαδή αν ένας χρήστης πάει σε 20 σελίδες θα κάνει 24000 queries.. (μόνο!)
και αν μπουν 1000 χρήστες και δουν 20 σελίδες θα έχουν (περίπου) 2.400.000 queries
..δεν συζητώ να μείνει κάποιος μερικές ώρες, δεν μπορώ καν να φανταστώ πόσα queries θα κάνει.

Η ερώτηση είναι.
Είναι νορμάλ τόσα πολλά queries σε μια εφαρμογή?
πόσα queries είναι νορμάλ χωρίς να νοιαζόμαστε αν θα κρεμάσει τον server?

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Πόσα SQL queries είναι πολλά?

Δημοσίευση από dimsis » 16 Ιουν 2011 11:04

Αν και δεν μας είπες τι είδους εφαρμογή είναι και σε ποια φάση κάνει τόσα queries, προσωπικά θεωρώ πως είναι υπερβολικά πολλά τόσα queries και πως θα αρχίσει να σκάει ο database server / database application με τέτοιο φόρτο.
Νομίζω χρειάζεται βελτιστοποίηση του κώδικα του, αφού για να πιάσει τέτοιους αριθμούς μάλλον έχει κάνει nested queries που πιθανών να μπορούν να αποφευχθούν με τα κατάλληλα join και group.

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

sibas
Honorary Member
Δημοσιεύσεις: 1856
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από sibas » 16 Ιουν 2011 11:36

dimsis είναι ένα custom cms όπου έχει την δυνατότητα να συνδέονται πολλαπλοί χρήστες, επίσης έχει αρκετές λειτουργίες όπως blogs, forum, microblogging, eshop κλπ και κάθε ένα από αυτά έχει πάλι τις δικές του ξεχωριστές λειτουργιές, είναι σε alpha μορφή, γνωρίζω ότι θα γίνουν σημαντικές βελτιώσεις, ωστόσο αυτά τα πολλά queries που έχει είναι κάτι που με προβληματίζουν..

γνωρίζω ότι joomla και κάποια άλλα cms αν παραφορτωθούν με modules ξεπερνάνε τα 600-800 queries αλλά 1200 παρά είναι πολλά γμτ μου!

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Πόσα SQL queries είναι πολλά?

Δημοσίευση από dimsis » 16 Ιουν 2011 11:59

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

Το ότι συνδέονται πολλαπλοί χρήστες δεν νομίζω πως έχει και τόσο σημασία. Μιλάμε για τον έναν χρήστη που μπαίνει ας πούμε στη σελίδα του blog. Τι στο καλό δείχνει εκεί μέσα που χρειάζεται έστω και 100 queries;

Και είσαι σίγουρος πως το Joomla τρέχει κάποια φάση 600 queries για ένα request ενός χρήστη για μια σελίδα; Αν είναι έτσι, χρειάζονται οπωσδήποτε query optimization.

Ως απάντηση στο ερώτημα σου "Πόσα SQL queries είναι πολλά;" θα σου έλεγα "όταν ξεπερνάνε τα 20", αλλά εννοείται πως έχει να κάνει με το ίδιο το project, την πολυπλοκότητα του και το τι δείχνουμε σε κάθε σελίδα.
Προσοχή. Δεν είναι ντεφάκτο πως αν ενώσεις τα 20 queries σε 1 γίνετε και πιο σωστή δουλειά. Και σε σύνθετα - πολύπλοκα queries μπορείς να το τεντώσεις τον server. Στην πραγματικότητα ακόμα και ένα λανθασμένο query αρκεί για κάτι τέτοιο...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από korgr » 16 Ιουν 2011 13:39

Στο πιο βαρύ project που έχω κάνει με Odyssey (δεν είναι ακόμα online), μετρώ:
Σε normal σελίδες 20 έως 45 ανά σελίδα
Σε σύνθετες μηχανές αναζήτησης 150-164 ανά σελίδα
Στο control panel (που μόνο ένας θα έχει πρόσβαση) μέτρησα το ανώτερο 540

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3203
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από CyberCr33p » 16 Ιουν 2011 14:00

To μέγιστο που έχω δει σε CMS 600+ σε wordpress με προβληματικό theme και δεκάδες plugins. Και το μέγιστο που έχω δει σε εφαρμογή είναι 3000+ σε ένα script που εμφάνιζε αποτελέσματα αγώνων. Σε γενικές γραμμές μια σελίδα δεν χρειάζεται πάνω από 50-60 queries.

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Πόσα SQL queries είναι πολλά?

Δημοσίευση από dimsis » 16 Ιουν 2011 14:03

Αυτά τα 540 βρε Νότη για να μου φύγει η περιέργεια, τι στο καλό κάνουν;
Έχω την εντύπωση πως μιλάμε για queries σε λούπες π.χ. για menu με submenus που πιθανότατα θα μπορούσαν να ενοποιηθούν.
Μπορεί να κάνει κάποιος ένα debug με τα queries που τρέχουν π.χ. σε joomla, wordpress ή σε αυτές τις εφαρμογές να δω από περιέργεια τι παίζει;

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από cpulse » 16 Ιουν 2011 14:15

Στο Joomla είναι 3-10 με μέσο όρο τα 4-5. Άμα βάλεις όμως και Virtuemart εκεί γίνονται πολλά περισσότερα, αλλά ακόμα κι εκεί υπάρχει caching. Όμως η βλακεία δεν έχει όρια. Πχ έχω δει query του στυλ

SELECT * FROM table WHERE id = 1 OR id = 2 OR id = 3 ... OR id = 2000

600 queries είναι σχεδόν σίγουρο οτι ο προγραμματιστής είτε έκανε πατάτα ή δεν ξέρει που παν τα 4. Ή ο γουέμπμάστορας έβαλε ό,τι plugin βρίκε.

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Πόσα SQL queries είναι πολλά?

Δημοσίευση από dimsis » 16 Ιουν 2011 14:17

cpulse έγραψε:SELECT * FROM table WHERE id = 1 OR id = 2 OR id = 3 ... OR id = 2000
Ακόμα και έτσι να είναι και δεν έχουν καν IN στο query, πάλι δεν βγαίνει το νούμερο!
Θα έπρεπε να ήταν έτσι για να μιλάμε για >600 :)
SELECT * FROM table WHERE id = 1
SELECT * FROM table WHERE id = 2
SELECT * FROM table WHERE id = 3
SELECT * FROM table WHERE id = 2000
...

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από cpulse » 16 Ιουν 2011 14:28

Μπορεί να ξέφυγε κανένα for loop και να βγήκε έτσι.

Ένα άλλο τρομαχτικά ηλίθιο που χω δεί πάλι είναι το random product module στο Virtuemart του Joomla. Για να βγάλει ένα τυχαίο προϊόν κατεβάζει όλα τα προϊόντα με SQL και μετά επιλέγει ένα τυχαίο με PHP.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από korgr » 16 Ιουν 2011 15:34

dimsis έγραψε:Αυτά τα 540 βρε Νότη για να μου φύγει η περιέργεια, τι στο καλό κάνουν;
Έχω την εντύπωση πως μιλάμε για queries σε λούπες π.χ. για menu με submenus που πιθανότατα θα μπορούσαν να ενοποιηθούν.
Μπορεί να κάνει κάποιος ένα debug με τα queries που τρέχουν π.χ. σε joomla, wordpress ή σε αυτές τις εφαρμογές να δω από περιέργεια τι παίζει;

χαχα Πόντιος Δημήτρη!
54 ήταν και είχε μείνει και μια debug var που έκανε echo την τιμή 0 και πήγε και κόλησε στην echo count($queries) :lol:

Οπότε το 164 είναι το max για μένα σε ότι πιο σύνθετο έχω αντιμετωπίσει :)

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10250
Εγγραφή: 28 Ιούλ 2001 03:00

Πόσα SQL queries είναι πολλά?

Δημοσίευση από Cha0s » 16 Ιουν 2011 15:36

cpulse έγραψε:Ένα άλλο τρομαχτικά ηλίθιο που χω δεί πάλι είναι το random product module στο Virtuemart του Joomla. Για να βγάλει ένα τυχαίο προϊόν κατεβάζει όλα τα προϊόντα με SQL και μετά επιλέγει ένα τυχαίο με PHP.
χαχαχα

Μου θύμισε εποχές php-nuke αυτό!

Εκεί είχε κάτι τέτοια τραγικά κομμάδια κώδικα :lol:


Πάντως 1200 queries είναι παρα πάρα πάρα πολλα.
Με βάλατε σε τριπάκι τώρα να μετρήσω τα queries σε διάφορα συστήματα μου :P
Κανένας εύκολος/αυτόματος τρόπος παίζει;

Έτσι από περιέργια, πόση ώρα κάνει να φορτώσει αυτή η σελίδα με τα 1200 queries;

Αν μαζευτούν αρκετά records και αρκετός κόσμος είναι σχεδόν σίγουρο ότι θα κολήσει το μηχάνημα (όπως έχω δει να κολάνε μηχανήματα από wordpress & joomla με ότι νάναι plugins πάνω)


Τελικά η ευκολία/ευελιξία της PHP έχει αντίκτυπο στην ποιότητα του κώδικα που γράφεται στο πόδι από πολλούς.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από korgr » 16 Ιουν 2011 16:11

Αν τα queries γίνονται "άτακτα", δηλαδή όπου το χρειαζόμαστε το κάνουμε καρφωτά, τότε δεν γνωρίζω εύκολο τρόπο.
Σε δομημένο κώδικα όπου σίγουρα έχεις μια class για την database, στην μέθοδο που αναλαμβάνει το query βάζεις μια session ή global μεταβλητή να αυξάνει κατά 1 την τιμή της. Αν στο entry point της σελίδας μηδενίζεις αυτή την μεταβλητή, μπορείς πχ στο footer να κάνεις echo την τιμή αυτής της μεταβλητής που θα δώσει και τον συνολικό αριθμό των queries που έγιναν για να παραχθεί η συγκεκριμένη σελίδα.

Πάντως έχει σημασία και τι queries κάνεις. Πχ δεν έχει την ίδια βαρύτητα ένα set names utf-8 με ένα σύνθετο join...

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10250
Εγγραφή: 28 Ιούλ 2001 03:00

Πόσα SQL queries είναι πολλά?

Δημοσίευση από Cha0s » 16 Ιουν 2011 16:14

Thanks Νότη, θα το τσεκάρω :)

Εννοείται πως έχει σημασία τι queries κάνεις.

Και πως είναι σχεδιασμένη η βάση, αν έχει σωστά indexes κλπ κλπ.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πόσα SQL queries είναι πολλά?

Δημοσίευση από cpulse » 16 Ιουν 2011 17:11

Έχει σημασία και αν είναι MyISAM ή InnoDB, πόσοι πίνακες πρέπει να ανοίξουν και πόσοι χρήστες είναι παράλληλα μέσα.

Στην καλύτερη περίπτωση ακόμα και με MyISAM, αν τα 1200 είναι όλα πάνω σε ένα πίνακα με τα σωστά indices τότε μπορεί και να τρέχει μια χαρά. Λεφτά υπάρχουν.

Απάντηση

Επιστροφή στο “Βάσεις Δεδομένων και SQL - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες