<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ADO.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/78/ShowForum.aspx</link><description>Θέματα σχετικά με την προσπέλαση δεδομένων μέσω του ADO.NET και του System.Data namespace</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Performance Issue</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8648.aspx</link><pubDate>Fri, 13 Jan 2006 16:19:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8648</guid><dc:creator>rousso</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8648.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=8648</wfw:commentRss><description>&lt;P&gt;Δυο μικρά σχολιάκια μια και ο Γιώργος το κάλυψε ήδη:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Το connection pooling σώζει όντως την κατάσταση με τα connections όχι μόνο σε επίπεδο χρήστη αλλά και σε επίπεδο εφαρμογής εάν τα connection string είναι ίδια σε διαφορετικά sessions (διαφορετικών χρηστών). Μην συγκρίνεις την Access με τον MS-SQL (ούτε καν με το MSDE)...&lt;/LI&gt;
&lt;LI&gt;Το να βάζεις datasets στο session και το application object (εκτός από κάποιες σπάνιες ενεδεχομένως περιπτώσεις) δεν είναι και τόσο καλή ιδέα. Αν μιλάμε για performance τότε προφανώς δεν μιλάμε για κανένα μικρό dataset που είναι χρήσιμο σε όλο το session ή σε όλο το application (γιατί σε αυτή την περίπτωση το βάζεις από την αρχή στο Session ή το Application object και κάνεις την δουλειά από εκεί). Προφανώς όμως ένα ή περισσότερα datasets που αφορούν την λειτουργικότητα μιας και μόνο σελίδας δεν χρειάζονται ούτε σε όλους τους χρήστες (σε επίπεδο application δηλαδή), ούτε σε όλη την διάρκεια επαφής τους με την εφαρμογή (δηλ. όλο το session). Έτσι ναι μεν δεν θα ξαναφτιάχνεις ένα dataset σε κάθε round-trip αν το βάλεις στο Session π.χ. αλλά θα σου κοστίσει αλλού περισσότερο αργότερα, γιατί όταν δεν θα το χρειάζεσαι πια θα είναι ακόμα στην μνημη του server! Πότε θα το καθαρίσεις; Αν έχεις 100 χρήστες (πόσο μάλλον χίλιους!) τότε θα βρεθείς πολύ γρήγρα με&amp;nbsp;τουλάχιστον 100 άχρηστες κόπιες του ίδιου dataset&amp;nbsp;στο session object...&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Σε ότι αφορά τουτς datareaders είναι μεν ταχύτεροι και προτιμότεροι από datasets όπου αυτό είναι εφικτό, αλλά προφανώς υπάρχουν πολλές περιπτώσεις που δεν είναι τόσο χρήσιμοι όσο ένα dataset... &lt;/P&gt;
&lt;P&gt;φιλικά&lt;BR&gt;rousso&lt;/P&gt;</description></item><item><title>Απ: Performance Issue</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8647.aspx</link><pubDate>Fri, 13 Jan 2006 15:06:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8647</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8647.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=8647</wfw:commentRss><description>&lt;P&gt;Η χρήση dataset δεν αλλάζει κάτι σε σχέση με την σύνδεση στον SQL Server.&lt;/P&gt;
&lt;P&gt;Το σημείο προσοχής εδώ είναι, ότι αν επιλέξεις να δουλέψεις με dataset μέσα στις σελίδες σου, θα έχεις πολλαπλάσια διαβάσματα από την βάση, για να γεμίσει με δεδομένα το dataset κάθε φορά, που δεν θα σου είναι κάθε φορά απαραίτητα. Αποτέλεσμα θα είναι η εφαρμογή σου να γίνει πιο αργή.&lt;/P&gt;
&lt;P&gt;Αν υποθέσουμε ότι το dataset δεν φορτώνεται για κάθε σελίδα, αλλά υπάρχει μέσα στο session ή ακόμα μέσα στο application object, θα πρέπει να προσέξεις το μέγεθός του -&amp;nbsp;μπορεί να καταλήξει να έχει όλη τη βάση δεδομένων στην μνήμη τους server σου για να μπορεί να εξυπηρετήσει τους χρήστες. Βέβαια μπορεί να είναι πολύ γρήγορη η εξυπηρέτηση των χρηστών, αλλά τα server resources είναι πολύτιμα για να τα παίρνει όλα μία και μόνο εφαρμογή.&lt;/P&gt;
&lt;P&gt;Μια άλλη περίπτωση είναι να υπάρξει πρόβλημα με την ανανέωση των δεδομένων, αφού σίγουρα οι χρήστες μοιράζονται δεδομένα και δεν θα γίνονται αντιληπτές&amp;nbsp;οι αλλαγές που κάνει κάποιος&amp;nbsp;στους υπολοίπους, μέχρι να γίνει το update στην βάση. Έτσι θα υπάρξει πρόβλημα&amp;nbsp;ποια δεδομένα είναι πιο σωστά,&amp;nbsp;αφού οι αλλαγές που έγιναν με κριτήρια τα δεδομένα που είχε ο χρήστης μπροστά του την στιγμή που τις έκανε,&amp;nbsp;δεν ήταν τα πιο πρόσφατα.&lt;/P&gt;
&lt;P&gt;Ένας τρόπος να αντικαταστήσεις την&amp;nbsp;χρηστικότητα και την ευκολία του dataset, είναι να φτιάξεις store procedures που θα δέχονται τα δεδομένα που χρειάζεται να γραφτούν στην βάση, και θα είναι υπεύθυνες να κάνουν πολλαπλές εγγραφές σε διάφορους πίνακες, αλλά εσύ θα περνάς τα δεδομένα προς την βάση μόνο μια φορά. Έτσι διατηρείς την ευκολία στην ανανέωση δεδομένων, αλλά αποφεύγεις το πρόβλημα που σου δημιουργούν τα datasets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Performance Issue</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8646.aspx</link><pubDate>Fri, 13 Jan 2006 10:27:05 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8646</guid><dc:creator>Zeus</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8646.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=8646</wfw:commentRss><description>Κατ' αρχήν ευχαριστώ για την βοήθεια!&lt;br&gt;Το βασικό σενάριο είναι και select αλλά και updates, insert κλπ (στην γενική περίπτωση τουλ.)&lt;br&gt;Αυτό με το cache προσπαθώ να το κάνω και όντως βοηθά την ταχύτητα. &lt;br&gt;Τα πολλά ανοιγοκλεισίματα δεν επηρεάζουν τον Ms sql? (γιατί λχ στην access ήταν καταστροφή σχεδόν).&lt;br&gt;Επίσης, επειδή το θίξατε, μπορεί να χρησιμοποιηθεί εξίσου αποτελεσματικά το dataset αντί του datareader, διότι γενικά είναι πιο βολικό.&lt;br&gt;Ευχαριστώ, και πάλι.&lt;br&gt;Φιλικά Ζευς</description></item><item><title>Απ: Performance Issue</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8640.aspx</link><pubDate>Fri, 13 Jan 2006 07:10:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8640</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8640.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=8640</wfw:commentRss><description>&lt;P&gt;Είναι διάφοροι παράμετροι οι οποίοι πρέπει να λάβεις υπόψη σου.&lt;/P&gt;
&lt;P&gt;Αν τα queries είναι action (INSERT, UPDATE, DELETE) καλό θα είναι να κλείνεις το connection όσο το δυνατόν πιο γρήγορα, μετά από κάθε query. &lt;/P&gt;
&lt;P&gt;Αν είναι μόνο SELECT, δεν έχει μεγάλη διαφορά, καθότι αν δεν το κλείσεις και συνεχίσεις, υποτίθεται ότι κερδίζεις χρόνο. Στην πραγματικότητα, δεν λειτουργεί έτσι,&amp;nbsp;γιατί ένα&amp;nbsp;connection όταν κλείνει, επιστρέφει στο connection pool του SQL Server για σύντομο χρονικό διάστημα, και αν χρειαστεί μέσα σε αυτό το διάστημα ένα νέο connection, ξαναγυρνάει&amp;nbsp;για χρήση της εφαρμογής που το ζήτησε. &lt;/P&gt;
&lt;P&gt;Έτσι ουσιαστικά δεν ξανανοίγει, αλλά επαναχρησιμοποιήται, με οφέλη και προς τον χρόνο, αλλά και την επαναχρησιμοποίηση των πόρων του server.&lt;/P&gt;
&lt;P&gt;Αν μιλάμε για μια ακολουθία από SELECT statements, που συνήθως συμβαίνει στα Web sites, καλό είναι να σκεφτείς την χρήση του cache. &lt;/P&gt;
&lt;P&gt;Θα μπορούσες πχ, το result set που σου επιστρέφει ο datareader να το βάλεις στο application cache με κλειδιά, το WHERE κομμάτι του SELECT και το table ή view που αναφέρεται και να μείνει εκεί για κάποιο περιορισμένο χρόνο. Έτσι σε ένα site που έχει μεγάλη κίνηση, θα γλυτώσεις πολλά queries και να ανέβει στο κατακόρυφο η ταχύτητα που θα γίνονται render οι σελίδες...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Performance Issue</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8633.aspx</link><pubDate>Fri, 13 Jan 2006 04:30:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8633</guid><dc:creator>Zeus</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8633.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=8633</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;Καλησπέρα και συγχαρητήρια στην κοινότητα αυτή για την δουλειά που κάνει!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;Λοιπόν ας πούμε ότι έχουμε ένα &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;website&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt; σε &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;net&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt; με &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;Ms&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;SQL&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;!&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;Και ας πούμε σε μια σελίδα χρειάζεται να εκτελέσεις διάφορες &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;SQL&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;. Η δική μου ερώτηση αφορά 2 διαφορετικά σενάρια σύνδεσης με &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;database&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;1.Ανοίγεις το &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;connection&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt; στην αρχή της σελίδας λχ στο &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;OnInit&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;εκτελεις τα &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;queries&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;, και κλείνεις στο &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;Unload&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;2.Σε κάθε &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;query&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt; ανοιγοκλείνεις το &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;connection&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-ansi-language: EL"&gt;Έχει κάποιος ιδέα τι θα ήταν πιο αποτελεσματικό?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;Φιλικά Ζευς&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/P&gt;</description></item></channel></rss>