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

 

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

Parallel C# & SQL Server Conqurrent

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 24-02-2012, 22:25. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-02-2012, 21:30 69442

    Parallel C# & SQL Server Conqurrent

       Λοιπόν έστω ότι έχω πολλά tasks τα οποία κάθε ένα γεμίζει με μια εγγραφή σε ένα πίνακα (κάνει ένα απλό insert στον ίδιο πίνακα όλα πχ) χωρίς να μπαίνει σε transaction ένα απλό insert το κάθε task. Η ερώτηση μου είναι θεωρητική ο SQL Server έχει κάποια ρύθμιση ή κάτι τέλος παντων που να ανταποκρίνεται καλύτερα σε concurrent συνθήκες ? (Ξανα λέω δεν με νοιάζει το locking και το Transaction)


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  24-02-2012, 21:48 69443 σε απάντηση της 69442

    Απ: Parallel C# & SQL Server Conqurrent

    Τί πρόβλημα έχεις ακριβώς? Ο SQL Server εξ ορισμού ανταποκρίνεται σε πολλές εκατοντάδες ταυτόχρονες κλήσεις. Δεν έχει μεγάλη σημασία αν οι κλήσεις αυτές έρχονται από ένα ή περισσότερα μηχανήματα. Γι αυτό ακριβώς το λόγο δεν έχει και νόημα να προσπαθείς να γράψεις από πολλά διαφορετικά threads στον ίδιο πίνακα. Απλά αυξάνεις την πιθανότητα μπλοκαρίσματος και καταναλώνεις resources εξαιτίας των πολλαπλών connections.

    Ίσα-ίσα, ο περιορισμός των ταυτόχρονων connections είναι μία από τις καλύτερες μεθόδους για να αυξηθεί το throughput μίας βάσης, ανεξαρτήτως κατασκευαστή. Με τον τρόπο αυτό μειώνονται τα conflicts και μπορούν να εξυπηρετηθούν περισσότερες κλήσεις ανά δευτερόλεπτο.

    Θα πρέπει να περιγράψεις τί προσπαθείς να κάνεις και ποιό είναι το πρόβλημα σου για να μπορέσει κάποιος να σε βοηθήσει.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-02-2012, 22:09 69444 σε απάντηση της 69443

    Απ: Parallel C# & SQL Server Conqurrent

    Βασικά δοκιμάζοντας το Parallel έκανα ένα προγραμματάκι το οποίο ανοίγει 5 tasks το οποίο κάθε ένα κάνει add μια εγγραφή σε έναν πίνακα και σκέφτηκα ότι αν υπάρχει επιλογή στην βάση / στον server που να αυξάνει την απόδοση όταν δέχτει concurrent queries μαζικά πχ . Είναι τελείως θεωρητικό απλά υπέθεσα ότι υπάρχουν εφαρμογές που θα θέλανε να γράφουν ταυτόχρονα στον ίδιο πίνακα όπως για παράδειγμα είχα κάνει στο παρελθόν έναν web crawler .Εκεί το framework ανοιγε tasks και κάθε task έκανε crawling και πρόσθετε στην βάση εγγραφές .Αυτό γινόταν συνεχώς σαν agent .Το θέμα είναι οκ καταλαβαίνω αυτό που λες και συμφωνώ αλλά όταν πχ ένα θεωρητικό σενάριο έχω 10 tasks τα οποία τρέχουν ταυτόχρονα και όλα πάνε να κάνουνε μια εγγραφή στην βάση τότε ο SERVER θα μου τα εκτέλεσει ταυτόχρονα ? (Εννοώ με concurrency αλγόριθμο ) τι θα κάνει ?

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  24-02-2012, 22:13 69445 σε απάντηση της 69443

    Απ: Parallel C# & SQL Server Conqurrent

    Και επίσης σκέφτηκα μήπως η βάση είναι κάτι σαν bottleneck για ένα τέτοιο σενάριο.

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  24-02-2012, 22:13 69446 σε απάντηση της 69444

    Απ: Parallel C# & SQL Server Conqurrent

    O SQL Server εκτελεί ΠΟΛΛΕΣ ΕΚΑΤΟΝΤΑΔΕΣ ή ΧΙΛΙΑΔΕΣ εντολές ταυτόχρονα, ανάλογα με την ταχύτητα του μηχανήματος, της μνήμης και των σκληρών δίσκων. Δεν έχει σημασία αν είναι εγγραφές ή αναγνώσεις. Το ίδιο φυσικά ισχύει και για τις άλλες server βάσεις όπως η MySQL, Oracle, DB2, ή όποια άλλη βάση έχει server.

    Εκεί που τίθεται θέμα πόσες ταυτόχρονες εγγραφές μπορούν να γίνουν, είναι μόνο σε κάποιες embedded βάσεις, όπως η SQLite η οποία by default κλειδώνει ολόκληρο τον πίνακα για κάθε εγγραφή.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-02-2012, 22:25 69447 σε απάντηση της 69446

    Απ: Parallel C# & SQL Server Conqurrent

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