Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Row-Overflow Data Exceeding 8 KB

Îåêßíçóå áðü ôï ìÝëïò agmarios. Τελευταία δημοσίευση από το μέλος Antonios Chatzipavlis στις 05-10-2006, 11:12. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-10-2006, 16:23 17834

    Row-Overflow Data Exceeding 8 KB

    αναπτύσουμε τον τελευταίο καιρό μια εφαρμογή. έχουμε έναν πίνακα με αρκετά varchar πεδία. Προέκειψε η ανάγκη τα πεδία αυτά να αυξηθούν σε μέγεθος και πλέον υπάρχει το ενδεχόμενο αρκετά μεγάλο ποσοστό εγγραφών του πίνακα (πάνω από 50%) να κάνει row-overflow. Ο πίνακας αυτός δεν γίνεται delete, δεν  θα γίνεται συχνά update και δεν ενδιαφέρει ιδιαίτερα η ταχύτητα του. Θα γίνεται όμως πολύ συχνά select και εκεί η ταχύτητα ενδιαφέρει πολύ!!

    Έχω λοιπόν τις εξής επιλογές και θέλω τη γνώμη σας ποια να ακολουθήσω:

    1. Κάνω την πάπια (παλιά, κλασσική μέθοδος με γνωστά δοκιμασμένα αποτελέσματα)
    2. Σπάω μόνος μου τον πίνακα σε πολλούς (vertical partioting δεν λέγεται;), φτιάχνω ένα view που τους διαβάζει όλους και φτιάχνω triggers για το view ώστε να έχω το Update,delete functionallity. Ωραίο ακούγεται
    3. Κρατάω τις πληροφορίες σε αρχεία και αποθηκεύω το path. Προβληματικό από πάρα πολλές πλευρές, αυτή τη στιγμή είναι η τελευταία επιλογή
    4. κατί άλλο;

    Μάριος

    υγ. Αν υπάρχει κανένα άρθρο (εκτός από αυτό στο BOL) θα το εκτιμούσα ιδιαιτέρως

  •  03-10-2006, 16:35 17835 σε απάντηση της 17834

    Απ: Row-Overflow Data Exceeding 8 KB

    καλησπέρα Μάριε

    Πριν απαντήσω έχω μια ερώτηση

    Πιο είναι το RDMS που χρησιμοποιείς???????

    SQL 2000 OR 2005
    Antonios Chatzipavlis

  •  03-10-2006, 16:48 17837 σε απάντηση της 17835

    Απ: Row-Overflow Data Exceeding 8 KB

    SQL Server 2005.

    Το development γίνεται στο developer edition αλλά το production platform δεν ξέρω ποια ακριβώς έκδοση θα είναι (για workgroup το βλέπω)

  •  03-10-2006, 17:12 17839 σε απάντηση της 17834

    Απ: Row-Overflow Data Exceeding 8 KB

    ok

    Στον 2005 υπάρχει το datatype varchar(max), nvarchar(max) το οποίο σου δίνει την δυνατότητα που θέλεις χωρίς να πειράξεις την λογική σου. Το καλό με τον τύπο αυτό είναι ότι ναι μεν μπορείς να αποθηκεύσεις δεδομένα μέχρι 2GB με την αρχιτεκτονική που είχε μέχρι τώρα ο sql server αλλά δεν το κάνει από την αρχή εαν τα περιεχόμενα χωράνε στη σελίδα τότε μπαίνουν σε αυτή αν όχι τοτε βάζει στη γραμμή ένα 16bit pointer που δείχνει σε ένα δεντρο με nodes. Αν μετά αλλάξεις το περιεχόμενο σε κάτι που χωράει να μπει στην σελίδα τότε σβήνει τις επιπλέον σελίδες και βάζει το περιέχομενο στην γραμμη. Ιδιαίτερο κόστος στο performance των select queries δεν έχεις έαν μάλιστα το αντιπαραθέσεις με την λογική των joins είναι χωρίς αμφιβολία καλύτερο. Σε πειράματα που έκανα είδα ότι η επιβάρυνση είναι 2-3% βλέποντας το query cost & το execution plan.

    Βέβαια πρέπει να επισυμάνω ότι ένα τέτοιο πεδίο δεν γίνεται index και αν δεν με απατάει η μνήμη μου παίζει σε όλες τις εκδόσεις του sql server αλλά δες το για σιγουριά


    Antonios Chatzipavlis

  •  03-10-2006, 17:25 17841 σε απάντηση της 17839

    Απ: Row-Overflow Data Exceeding 8 KB

    Πρακτικά η λογική είναι ίδια απλά αν δεν χωράει μέσα στη γραμμή το βάζει σε δέντρο αντί για το row-overflow. Αν η επιβάρυνση είναι μόνο 2-3% δεν υπάρχει μεγάλο πρόβλημα αλλά θα ήθελα να σε ρωτήσω κάτι:

    Το ποσοστό αυτό βγήκε σε production περιβάλλον; με πολλές βάσεις να συναγωνίζονται για ΙΟ memory και ΙΟ reads;

    ευχαριστώ για τη βοήθεια
    Μάριος

    υγ: Και να μπορούσα δεν θα έκανα index τέτοια πεδία

  •  04-10-2006, 13:31 17914 σε απάντηση της 17834

    Απ: Row-Overflow Data Exceeding 8 KB

    Μάριε

    Το περιβάλλον στο οποίο εγώ έκανα τα πειράματα μου ήταν αρκετά καλό. Εντάξει δεν ήταν Heavy duty αλλά δεν ήταν για πέταμα.

    Όπως και να έχει πάντως είναι πολύ καλύτερο από το να κάνεις join queries.


    Antonios Chatzipavlis

  •  04-10-2006, 14:39 17929 σε απάντηση της 17914

    Απ: Row-Overflow Data Exceeding 8 KB

    ok, δεκτό. Μια τελευταία ερώτηση:

    διάβασα σε ένα blog στο msdn ότι την sqlParameter για το πεδίο τύπου varchar(max) πρέπει να την περάσω με size= -1 ίσχύει αυτό; λίγο παράξενο μου φαίνεται. βέβαια αναφερόταν σε output parameter όπου δεν έχει σημασία το size.

  •  05-10-2006, 00:31 17951 σε απάντηση της 17929

    Απ: Row-Overflow Data Exceeding 8 KB

    ΝΑΙ

    και αυτό γιατί το property είναι σε bytes. Φαντάσου τον αριθμό που θα έπρεπε να γράψεις...

    Έτσι βάλανε -1 γιατί αρνητικές τιμές σε μέγεθος πεδίου όπως και να το κάνουμε δεν γίνεται
    Antonios Chatzipavlis

  •  05-10-2006, 10:58 17991 σε απάντηση της 17951

    Απ: Row-Overflow Data Exceeding 8 KB

    Αντώνη, ευχαριστώ πολύ

    το δοκίμασα από εχθές κιόλας και παίζει μια χαρά, το μόνο που χρειάστηκε να κάνω ήταν να αλλάjω τον τύπο των πεδίων και των παραμέτρων στα stored procedures.

  •  05-10-2006, 11:12 17994 σε απάντηση της 17834

    Απ: Row-Overflow Data Exceeding 8 KB

    Να είσαι καλά

    Ο μικρός στην φώτο δικός σου είναι πόσο ετών είναι;


    Antonios Chatzipavlis

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems