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

 

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

Κάρφωσέ το το τιμημένο και η χρήση του στον Cache Manager

Îåêßíçóå áðü ôï ìÝëïò gkontog. Τελευταία δημοσίευση από το μέλος Greg στις 15-09-2004, 00:31. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-08-2004, 22:53 149

    Lightning [li] Κάρφωσέ το το τιμημένο και η χρήση του στον Cache Manager

    Για να αυξήσει τις επιδόσεις του ο SQL Server ποτέ δεν διαβάζει άμεσα τα δεδομένα από το μέσο αποθήκευσης αλλά τα ζητά από ένα object που λέγεται Cache Manager. Ο Cache Manager χρησιμοποιεί έναν αλγόριθμο LRU (Least Recently Used) για να αποφασίσει ποιές σελίδες θα κρατήσει στη μνήμη γιατί οι χρήστες τις ζητάνε συχνά και ποιές θα κάνει flush στο μέσο αποθήκευσης. Εχουμε την δυνατότητα να ορίσουμε με την εντολή DBCC PINTABLE κάποιο table το οποίο θέλουμε να παραμείνει συνεχώς στη μνήμη και να μην γίνει flush στο δίσκο παρακάμπτοντας τον LRU αλγόριθμο. Αυτό έχει σαν αποτέλεσμα τη δραστική αύξηση των επιδόσεων όσον αφορά τα queries τα οποία κάνουν χρήση του pinned table.

       Η εντολή
    DBCC PINTABLE δεν έχει ως αποτέλεσμα την άμεση ανάγνωση του table στη μνήμη αλλά με την πάροδο του χρόνου καθώς οι pages του συγκεκριμένου table έρχονται στη μνήμη λόγω των queries που εκτελούν οι χρήστες, σημειώνονται ως pinned και παραμένουν εκεί. Ομοίως η εντολή DBCC UNPITABLE δεν καταλήγει στην άμεση αφαίρεση των pages από τη μνήμη αλλά σημειώνει αυτές ως unpinned και με την πάροδο του χρόνου και την εφαρμογή του LRU αυτές θα αφαιρεθούν.

        Η εντολή για κάνουμε
    pin ένα table είναι:

    DECLARE @Database_ID int
    DECLARE @Table_ID int
    USE Northwind
    SET @Database_id = DB_ID('Northwind')
    SET @Table_ID = OBJECT_ID('Northwind'..Customers)
    DBCC PINTABLE (@Database_id, @Table_ID)

        και αντίστοιχα η
    UNPINTABLE:

    D
    ECLARE @Database_ID int
    DECLARE @Table_ID int
    USE Northwind
    SET @Database_id = DB_ID('Northwind')
    SET @Table_ID = OBJECT_ID('Northwind'..Customers)
    DBCC UNPINTABLE (@Database_id, @Table_ID)

        Τα
    tables τα οποία είναι υποψήφια για pin πρέπει να είναι μικρά σε μέγεθος και αριθμό εγγραφών και να ζητώνται συχνά από τους χρήστες όπως π.χ. οι κατηγορίες ΦΠΑ, τα είδη παραστατικών, οι τύποι πελατών. Για να μας τα τονίσει όλα αυτά ο SQL Server με την εκτέλεση της DBCC PINTABLE εμφανίζει το μήνυμα:

          Warning: Pinning tables should be carefully considered. 
          If a pinned table is larger, or grows larger, than the 
          available data cache, the server may need to be restarted 
          and the table unpinned.

        ΠΡΟΣΟΧΗ!!!
    Αν για κάποιο λόγο το ή τα pinned tables καταλάβουν όλη τη μνήμη που έχει στη διάθεσή του ο Cache Manager, τότε πρέπει να γίνει stop το service του SQL Server, στη συνέχεια start και να γίνουν άμεσα unpinned τα tables τα οποία δημιούργησαν το πρόβλημα.

  •  15-09-2004, 00:31 179 σε απάντηση της 149

    Re: Κάρφωσέ το το τιμημένο και η χρήση του στον Cache Manager

    Ένα παρεμφερές αρθρο που μπορεί να ενδιαφέρει μπορειται να βρείτε εδώ
    http://www.sql-server-performance.com/rd_data_cache.asp

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