<?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>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Concurrency issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/75648.aspx</link><pubDate>Mon, 25 Aug 2014 02:54:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:75648</guid><dc:creator>Elias.Tsokanis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/75648.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=75648</wfw:commentRss><description>&lt;p&gt;Αν και καθυστερημένα σας ευχαριστώ όλους για τις απαντήσεις σας.&lt;/p&gt;&lt;p&gt;Προς το παρόν δεν θα&amp;nbsp;προσθέσω κάτι.&lt;/p&gt;</description></item><item><title>Απ: Concurrency issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/75501.aspx</link><pubDate>Sun, 22 Jun 2014 06:11:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:75501</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/75501.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=75501</wfw:commentRss><description>&lt;a href="http://www.sqlschool.gr/SqlNight/24/Content.aspx"&gt;http://www.sqlschool.gr/SqlNight/24/Content.aspx&lt;/a&gt;</description></item><item><title>Απ: Concurrency issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/75113.aspx</link><pubDate>Thu, 06 Mar 2014 22:28:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:75113</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/75113.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=75113</wfw:commentRss><description>&lt;P&gt;Ενδεχόμενο υπάρχει ακόμα και με 2 άτομα, μήν πω και με 1, αν ο κώδικας και η σχεδίαση της βάσης είναι κακή. Transaction isolation υπάρχει πάντα - είναι ο μηχανισμός της οποιαδήποτε βάσης ο οποίος εξασφαλίζει ότι αλλαγές που γίνονται από ένα connection δεν θα χαλάσουν τα δεδομένα που βλέπει ένα άλλο connection.&lt;/P&gt;
&lt;P&gt;Δεν δίνεις κανένα ουσιαστικό στοιχείο (π.χ. εκτιμώμενος όγκος (MB αλλά και γράμμές) πλήθος πινάκων, συχνότητα κλήσεων, είδος query, είδος χρήσης) για το τί θα γίνεται με τη βάση οπότε μόνο τα "γενικά" μπορεί να πει κανείς:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ποτέ μα ποτέ μην κρατάς ένα &amp;nbsp;transaction ανοικτό παραπάνω απ' όσο χρειάζεται. Ποτέ μην κάνεις υπολογισμούς στον client έχοντας&amp;nbsp;ανοικτά transactions&lt;/LI&gt;
&lt;LI&gt;Φρόντισε να έχεις σωστά indexes για όλους τους πίνακες και να ανανεώνεις συχνά τα statistics.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Μην προσπαθείς να γράψεις "περίεργα" queries με LINQ ή όποια γλώσσα υποστηρίζει το ORM σου. Η SQL που παράγεται συνήθως είναι περίεργη, αργή, ή δεν κάνει αυτό που νομίζεις. Καλύτερα φτιάξε views και stored procedures που θα κάνουν αυτό που θέλεις.&lt;/LI&gt;
&lt;LI&gt;Αντί να χτυπάς τη βάση για να πειράξεις μία-μία γραμμή, πχ. σε loop, γράψε το κατάλληλο query που θα πειράξει ή θα διαβάσει όλες τις γραμμές που χρειάζεσαι με τη μία.&lt;/LI&gt;
&lt;LI&gt;Μην κρατάς ένα connection ανοικτό για πάντα. Το connection pooling εξασφαλίζει ότι δεν κοστίζει τίποτε να το κλείνεις αμέσως όταν δεν το χρειάζεσαι. Έτσι αποφεύγεις να μαζευτούν locks από ξεχασμένα transactions&lt;/LI&gt;
&lt;LI&gt;Χρησιμοποίησε optimistic concurrency αντί για transactions. Χονδρικά, το ORM/API που χρησιμοποιείς κοιτάζει αν κάποιος άλλος έχει αλλάξει τα δεδομένα που προσπαθεί να γράψει και σου "φωνάζει" αν έχουν πειραχτεί. Η τεχνική υποστηρίζεται από όλα τα ORMs, με τα οποία μάλιστα όλες οι αλλαγές μπορούν να μαζευτούν και να αποθηκευτούν σαν πακέτο. Transactions χρησιμοποιούνται μόνο όταν σώζεται ολόκληρο το batch&lt;/LI&gt;
&lt;LI&gt;Μην εκτελείς reporting πάνω σε transactional (OLTP) δεδομένα.&amp;nbsp;Από τη μία κάθε σενάριο χρειάζεται διαφορετικό σχήμα, από την άλλη όσο εκτελείται ένα βαρύ reporting query θα καθυστερούν όλες οι αλλαγές.&amp;nbsp;Φτιάξε μία άλλη reporting database της οποίας το schema θα διευκολύνει το reporting και κάνε περιοδικά update με τα δεδομένα της online.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Concurrency issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/75112.aspx</link><pubDate>Thu, 06 Mar 2014 22:07:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:75112</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/75112.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=75112</wfw:commentRss><description>&lt;p&gt;Η απάντηση στην ερώτηση αυτή είναι ότι εφόσον έχει ακολουθηθεί ο κανόνας του open connection late - close connection early αλλά και όσα αναφέρω παρακάτω&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sqlschool.gr/blog/error-1205-or-a-deadlock-occurred-how-to-deal-with-it-756.aspx"&gt;http://www.sqlschool.gr/blog/error-1205-or-a-deadlock-occurred-how-to-deal-with-it-756.aspx&lt;/a&gt;&amp;nbsp;δεν βλέπω το λόγο να χρησιμοποιηθεί κάποιο ιδιαίτερο isolation level.&lt;/p&gt;&lt;p&gt;Φυσικά θα πρέπει να επισημάνω ότι&amp;nbsp;όλα είναι σχετικά με το πως&amp;nbsp;έχει σχεδιαστεί η βάση δεδομένων αλλά και πως έχει γραφτεί η εφαρμογή&lt;/p&gt;&lt;p&gt;Φιλικά&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Concurrency issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/75111.aspx</link><pubDate>Thu, 06 Mar 2014 21:50:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:75111</guid><dc:creator>Elias.Tsokanis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/75111.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=75111</wfw:commentRss><description>&lt;p&gt;Θα ήθελα τη γνώμη σας για ένα σχετικά μικρό σύστημα, για&amp;nbsp;business environment, με 15 έως 20 χρήστες το πολύ, όπου ο καθένας κάνει τη δουλειά του.&lt;/p&gt;&lt;p&gt;Πιστεύετε ότι υπάρχει ενδεχόμενο να παρουσιαστούν concurrency cases/issues και άρα θα πρέπει να εφαρμοστεί κάποια μέθοδος transaction isolation?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>