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

 

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

Πως κάνουμε γρηγορότερη μια εφαρμογη...

Îåêßíçóå áðü ôï ìÝëïò jimenez. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 23-09-2007, 21:12. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-09-2007, 17:08 35283

    Confused [8-)] Πως κάνουμε γρηγορότερη μια εφαρμογη...

       
        Έχω φτιάξει μια εφαρμογή η οποία κάνει συνεχώς διαβάσματα από μια βάση. Πως μπορώ να κάνω ελαφρύτερη ή και ακόμα γρηγοροτερη? Παίζω με Querakia. Υπάρχει κάποια καλύτερη τακτική(Σιγουρα)? Σε περίπτωση που πάθει ζημια η βάση τι πιστεύεται να κάνω?να διαβάζω και γενικά να πζίξω με αρχεία?


    Dimitris S.
    FIRST TEST THEN CODE....
  •  23-09-2007, 19:17 35288 σε απάντηση της 35283

    Απ: Πως κάνουμε γρηγορότερη μια εφαρμογη...

    Αν τραβάς από τη βάση συχνά τα ίδια δεδομένα, μπορείς να κατασκευάσεις ένα δικό σου σύστημα caching, προκειμένου να αποθηκεύεις διάφορα δεδομένα στη μνήμη, ώστε να μη χρειάζεται να ξανακάνεις access τη βάση για να τα φέρνεις. Υπάρχει και το Caching Application Block, το οποίο σε βοηθάει σε μεγάλο βαθμό και το οποίο μπορείς να δεις εδώ. Βέβαια, πρέπει πάντα να προσέχεις ώστε η μνήμη που καταναλώνει η εφαρμογή σου να μην είναι υπερβολικά μεγάλη σε μέγεθος. Αλλά αυτό εξαρτάται από την εφαρμογή και το σχεδιασμό της.
    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  23-09-2007, 21:12 35293 σε απάντηση της 35283

    Απ: Πως κάνουμε γρηγορότερη μια εφαρμογη...

    Αυτό που ζητάς είναι υπερβολικά γενικό. Τί είδους queries κάνεις? Πόσο συχνά? Τί εννοείς ελαφρύτερη βάση? Καλύτερη τακτική από ποιά? Όσο για τις ζημιές και τα αρχεία, μάλλον πρέπει να εξηγήσεις τί εννοείς. Αν εννοείς ότι φοβάσαι ότι αν πάθουν κάτι τα αρχεία της βάσης, θα χάσεις δεδομένα, τί σε κάνει να πιστεύεις ότι με δικά σου αρχεία θα είσαι πιο ασφαλής? Μία βάση τουλάχιστον κάνει ένα αυτοέλεγχο.

    Το μόνο που μπορεί κανείς να σου προτείνει είναι να φροντίσεις να ακολουθείς κάποιους βασικούς κανόνες.

    • Να έχεις σωστά indexes. Η απόδοση των queries αυξάνεται κατακόρυφα αν υπάρχουν indexes στις στήλες που χρησιμοποιείς στα where και στα joins.
    • Να μην χρησιμοποιείς cursor, ή επαναλαμβανόμενα queries μέσα σε loops (είναι σα να χρησιμοποιείς cursors). Έστω ότι διαβάζεις 100 εγγραφές από τη βάση και για κάθε μία από αυτές θέλεις να διαβάσεις κάποια άλλα δεδομένα από τη βάση. Αν κάνεις άλλα 2-3 queries για κάθε εγγραφή που διάβασες από τη βάση, θα καταλήξεις με 200-300 περιττά queries. Καλύτερα να κάνεις εκτελέσεις ένα query που θα επιστρέψει όλα τα δεδομένα που χρειάζεσαι.
    • Να μην χρησιμοποιείς χύμα sql αλλά το λιγότερο parameterized queries. Όταν υποβάλεις ένα χύμα query σε μορφή string, η βάση πρέπει να το κάνει parse και να υπολογίσει τον καλύτερο τρόπο να το εκτελέσει. Αν αντί για χύμα queries χρησιμοποιήσεις parameterized queries ή ακόμα καλύτερα, stored procedures, η βάση θα κάνει parse το query μόνο την πρώτη φορά που θα το εκτελέσεις.
    • Μην ανοίγεις παραπανήσια connections. Συνήθως δεν χρειάζεσαι παραπάνω από ένα connection για όλη την εφαρμογή. Μπορείς να πετύχεις να υπάρχει μόνο ένα connection ανοικτό κάθε φορά αν χρησιμοποιείς connection pooling, δημιουργείς ένα connection μόνο όταν χρειάζεται και το κλείνεις όταν δεν το χρειάζεσαι πλέον. Το connection pooling αναλαμβάνει να κρατήσει ανοικτό το connection και να στο επιστρέψει όταν το ξαναζητήσεις. Με τον τρόπο αυτό μπορείς να πετύχεις διπλάσιες επιδόσεις όταν εκτελείς συχνά μικρά queries.
    • Μην επιστρέφεις παραπανήσια δεδομένα σε ένα query. Μπορεί το SELECT * FROM TABLE να βολεύει, έτσι όμως επιστρέφεις πολύ περισσότερα δεδομένα απ' όσα χρειάζεσαι.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems