Το mysql join αυξάνει το Load;

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

Απάντηση
Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cdhyper » 21 Σεπ 2009 17:36

Ναι στον server είναι μόνο ένα site. Ορίστε και το my.cnf, νομίζω έχω κάνει κάποιο optimization αλλά ίσως κάποιος παρατηρήσει κάτι καλύτερο, οπότε το επισυνάπτω. Σημειωτέον ότι ο server είναι ένας Quad Core Intel Xeon X3360 με 4mb ram:
[mysqld]
set-variable = max_connections=1000
safe-show-database
old-passwords = 1

skip-locking
key_buffer = 16M
max_allowed_packet = 16M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 512K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
long_query_time=1
log-slow-queries=/var/lib/mysql/slow-queries.log


max_connections = 1000
max_user_connections = 300

connect_timeout=2

set-variable = wait_timeout=10
set-variable = interactive_timeout=10
set-variable = thread_cache=40

skip-name-resolve

init-connect='SET NAMES GREEK'
default-character-set = greek



[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

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

Το mysql join αυξάνει το Load;

Δημοσίευση από CyberCr33p » 21 Σεπ 2009 17:47

Εάν έχεις ελεύθερη RAM θα έκανα το key_buffer = 128M

Σχετικά με τις υπόλοιπες τιμές σχετικές με την cache θα πρέπει να δεις πόσα "χτυπήματα" γίνονται στην cache και πόσα εκτελούνται κανονικά και μετά κάνεις τη διαίρεση στις 2 τιμές και εάν βρεις νομίζω κάτω από 0.01% είναι εντάξει. Εάν βρεις παραπάνω τότε αυξάνεις την αντίστοιχη τιμή στο my.cnf και εάν βρεις παρακάτω μειώνεις τη τιμή γιατί πάει να πει ότι σου τρώει RAM χωρίς λόγο.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27647
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cordis » 21 Σεπ 2009 19:08

to log-slow-queries=/var/lib/mysql/slow-queries.log na to exeis mono gia debug.. an to exeis sinexia kai tros xoro kai xrono apo tin mySQL...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Το mysql join αυξάνει το Load;

Δημοσίευση από soteres2002 » 22 Σεπ 2009 23:12

κι εμένα η άποψή μου είναι να φτιάξεις ένα ευρετήριο (CREATE INDEX), όπως είπαν τα παιδία πιο πάνω, πάνω στα γνωρίσματα των σχέσεων που κάνεις πιο συχνά ερωτήματα. Ο χρόνος ανάκτησης τότε μειώνεται σε λογαριθμικό, εν αντιθέσει με τον κλασσικό τρόπο ανάκτησης με CROSS/NATURAL JOIN. Ωστόσο και σε αυτή τη λύση μπορεί να υπάρχουν προβλήματα: η ανάκτηση είναι ταχύτατη αν χρησιμοποιηθεί σωστά όμως τα updates θα προκαλούν μεγάλο φόρτο, γιατί το ευρετήριο πρέπει να αναδιοργανωθεί για τα νέα δεδομένα... Θα έχεις πρόβλημα ειδικά αν κάνεις συχνά τέτοιες ενημερώσεις στην βάση, πάνω στις σχέσεις για τις οποίες έχεις φτιάξει τα ευρετήρια, εφόσον λες ότι τα δεδομένα σου είναι ηδη αρκετά σε όγκο. Επομένως... προσοχή! To Index/Join είναι η επόμενη λύση αλλά δεν είναι πανάκεια... Επίσης, υπάρχει και περιθώριο βελτίωσης στο πρόβλημα αν χρησιμοποιήσεις και μια distributed cache όπως η memcached για να cacheάρεις τα αποτελέσματα των queries, εφόσον θα προσθέσεις περιοδική ενημέρωση της βάσης απο cron job. Τότε καλό θα ήταν να τρέχεις 2 τέτοια deamons: ένα σε κάθε κόμβο of mysql cluster. Υπάρχει και ένα mysql memcached module που το κάνεις ξεχωριστά compile/install από mySQL, ουσιαστικά πρόκειται για intergration του memcached στην mySQL. Νομίζω ΠΡΕΠΕΙ να το ψάξεις εφόσον μπορείς να πειράξεις την βάση...

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cdhyper » 23 Σεπ 2009 02:28

Έχει ήδη δρομολογηθεί το να μικρύνω τη βάση άμεσης πρόσβασης και χωρίσω τα παλιά δεδομένα. Έχω κάνει και κάποια βελτιστοποίηση στο my.cnf. Σε 2 μέρες θα σας ενημερώσω για τα αποτελέσματα. Νομίζω θα είναι πολύ θετικά και την παλιά βάση θα την βάλω σε άλλο server. Τα indexes κλπ που προτείνετε τα έχω εφαρμόσει ούτως ή άλλως αλλά μιλάμε για τεράστια βάση και για πολλούς επισκέπτες, οπότε ένα άλφα πρόβλημα φόρτου εξακολουθεί να ισχύει.
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cherouvim » 23 Σεπ 2009 07:45

Τα tables είναι myisam ή innodb; Πρέπει να πειράξεις τους σωστούς buffers και όχι στην τύχη.

Οι λύσεις memcached και master-slave replication είναι για το τέλος και κατά πάσα πιθανότητα δεν τις χρειάζεσαι. (Μακάρι να έχεις τόσο traffic που να πρέπει να κοιτάξεις και αυτά).

Το slow query log μπορείς άφοβα να το αφήσεις να δουλεύει για πάντα και από εκεί θα βγάζεις τα συμπεράσματα σου για τα pain points του σχήματος. Είναι η standard πρακτική.
Αν το μέγεθος του μεγαλώνει τότε μπορείς να το κάνεις zip και από πάνω cat /dev/null > /var/lib/mysql/slow-query-log αλλά αν είναι το log αυτό να μεγαλώνει πολύ τότε σίγουρα έχεις queries να βελτιώσεις!

Αν το πρόβλημα είναι σοβαρό και ο πελάτης σου έχει budget μπορεί να στο λύσει η http://www.percona.com/
Αν σε ενδιαφέρει να το λύσεις μόνος σου αλλά και να καταλάβεις εις βάθος τι παίζει με το θέμα μπορείς να διαβάσεις (εσύ ή ο προγραμματιστής σου) το http://amzn.com/0596003064
Online resources που θα σε βοηθήσουν αυτή τη στιγμή:
http://hackmysql.com/case1
http://hackmysql.com/case2
http://hackmysql.com/case3
http://hackmysql.com/case4
http://hackmysql.com/case5
http://www.mysqlperformanceblog.com/

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cdhyper » 23 Σεπ 2009 12:39

Thanks για τις λύσεις. Το traffic είναι μεγάλο. Δεν μιλάμε για 4-5.000 χρήστες/ημέρα :)
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cherouvim » 23 Σεπ 2009 13:30

Σε αυτή τη περίπτωση δεν μας ενδιαφέρουν οι χρήστες αλλά τα live pageviews/day και το peak σε pageviews/sec και διάρκεια.

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

Το mysql join αυξάνει το Load;

Δημοσίευση από cdhyper » 23 Σεπ 2009 13:57

Και αυτά μεγάλα και πολλά είναι. Δεν μπορώ να σου αναφέρω ακριβώς αλλά πίστεψέ με είναι μεγάλα.
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Απάντηση

Επιστροφή στο “MySQL”

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

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