Βελτιστοποίηση εισαγωγής πολλών δεδομένων

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

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

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

Βελτιστοποίηση εισαγωγής πολλών δεδομένων

Δημοσίευση από cpulse » 18 Απρ 2011 10:49

Ένα ενδιαφέρον άρθρο για βελτίωση στην ταχύτητα εισαγωγής πολλών, πάρα πολλών, δεδομένων

http://kevin.vanzonneveld.net/techblog/ ... rformance/

Συγκρίνει διάφορες μεθόδους εισαγωγής.

Βάζει στο τραπέζι το DELAYED INSERT, αλλά το απορρίπτει επειδή δεν παίζει σε InnoDB.

Μετά ελέγχει αν μπορεί να έχει καλή απόδοση με transactions, με την λογική οτι στα transactions το re-index γίνεται στο commit, όχι σε κάθε query. Όμως υπάρχει ένα μεγάλο overhead που τελικά κάνει τα transactions αργά.

Τέλος, ελέγχει την LOAD DATA INFILE. Αυτό φορτώνει δεδομένα από text αρχεία σε μορφή CSV. Βρίσκει οτι η μέγιστη απόδοση είναι οταν φτιάχνει αρχεία με μέγιστο αριθμό δεδομένων τα 1000 rows και η απόδοση είναι 2,124.09% ή αλλιώς 21 φορές γρηγορότερο από ένα απλό insert.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Βελτιστοποίηση εισαγωγής πολλών δεδομένων

Δημοσίευση από Apostolis_38 » 18 Απρ 2011 14:06

Το ενδιαφέρον είναι οτι δίνει και τρόπο υλοποίησης, αν και πιθανόν όχι ολοκληρωμένος (όπως λέεει ο ίδιος "still working on this, will be updated regularly")

Επίσης απο ένα πρόχειρο ψάξιμο βρήκα άλλο ένα ενδιαφέρον άρθρο του:
Saved on disk (or in RAM, see my other article Create turbocharged storage using tmpfs)
http://kevin.vanzonneveld.net/techblog/ ... ing_tmpfs/

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

Βελτιστοποίηση εισαγωγής πολλών δεδομένων

Δημοσίευση από cordis » 19 Απρ 2011 01:17

το πρώτο που πρέπει να κάνεις είναι drop τα indexes! :D
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Βελτιστοποίηση εισαγωγής πολλών δεδομένων

Δημοσίευση από pimpogio » 19 Απρ 2011 01:30

το btree index που εχει και η mysql ειναι ενα m-way balanced tree με υψος logN και εχει O(logN) για insert search k delete.
οποτε γι αυτο ειναι αργο στο insert αλλα ειναι ταχυτατο
στο search.

υπαρχουνε ομως παραλαγες που ειναι βελτιωμενες στο insert

αν κανεις drop το btree index πευτεις απο το O(logN)
στο O(1) που σημαινει δραματικη βελτιωση στο insert.

πατε εδω http://slady.net/java/bt/view.php να το δειτε οπτικα γιατι αμα κανεις drop
τα index εχεις δραματικη βελτιωση στο insert

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

Βελτιστοποίηση εισαγωγής πολλών δεδομένων

Δημοσίευση από cordis » 20 Απρ 2011 19:57

και μετά τα insert recreate, αλλά δεν είναι για όλες τις εγκαταστάσεις αυτό. πολλές φορές το drop 'n' recreate καθυστερεί περισσότερο σε συνολικό χρόνο από το insert με τα indexes.

είναι όμως ένας πάρα πολύ καλός τρόπος για να κάνεις migrate όπου ίσως χρειαστεί να περάσεις πολλές φορές όλες τις εγγραφές από την αρχή. ;)
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

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

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

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