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

 

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

Περί συντήρησης

Îåêßíçóå áðü ôï ìÝëïò axaros. Τελευταία δημοσίευση από το μέλος KelMan στις 07-07-2006, 21:37. Υπάρχουν 17 απαντήσεις.
Σελίδα 1 από 2 (18 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-06-2006, 10:24 14189

    Περί συντήρησης

    Προς db admins η ερώτηση :
    Ποιες ενέργειες θεωρείτε απαραίτητες για την συντήρηση μιας SQL Server
    (2000 και πάνω) database;
    Πάνος Αβραμίδης
  •  05-07-2006, 10:25 14426 σε απάντηση της 14189

    Απ: Περί συντήρησης

    Να ξεκινήσω με Reindexing των πινάκων ;
    Με SQL DMO (RebuildIndexes method), DBCC DBREINDEX ή DBCC INDEXDFRAG ...

    Κάθε πότε ; Πως 'μεταφράζω' τα αποτελέσματα του DBCC SHOWCONTIG ;
    Τι αλλάζει στον 2005; 


    Πάνος Αβραμίδης
  •  05-07-2006, 11:35 14427 σε απάντηση της 14426

    Απ: Περί συντήρησης

    Explain by example: Δείξε ένα output από ένα DBCC SHOWCONTIG να το κουβεντιάσουμε
    Vir prudens non contra ventum mingit
  •  05-07-2006, 11:56 14428 σε απάντηση της 14427

    Απ: Περί συντήρησης

    Έφτασε :

    DBCC SHOWCONTIG scanning '***MyTable***' table...
    Table: '***MyTable***' (370100359); index ID: 1, database ID: 13
    TABLE level scan performed.
    - Pages Scanned................................: 1431
    - Extents Scanned..............................: 182
    - Extent Switches..............................: 181
    - Avg. Pages per Extent........................: 7.9
    - Scan Density [Best Count:Actual Count].......: 98.35% [179:182]
    - Logical Scan Fragmentation ..................: 0.42%
    - Extent Scan Fragmentation ...................: 13.19%
    - Avg. Bytes Free per Page.....................: 781.9
    - Avg. Page Density (full).....................: 90.34%

    DBCC SHOWCONTIG scanning '***MyTable***' table...
    Table: '***MyTable***' (370100359); index ID: 15, database ID: 13
    LEAF level scan performed.
    - Pages Scanned................................: 219
    - Extents Scanned..............................: 28
    - Extent Switches..............................: 27
    - Avg. Pages per Extent........................: 7.8
    - Scan Density [Best Count:Actual Count].......: 100.00% [28:28]
    - Logical Scan Fragmentation ..................: 12.33%
    - Extent Scan Fragmentation ...................: 7.14%
    - Avg. Bytes Free per Page.....................: 803.9
    - Avg. Page Density (full).....................: 90.07%
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.


    Πάνος Αβραμίδης
  •  05-07-2006, 12:45 14429 σε απάντηση της 14428

    Απ: Περί συντήρησης

    Λοιπόν, ας πούμε για το πρώτο DBCC. Έχουμε και λέμε:

    Αποτελείται από 1431 σελίδες. Κάθε σελίδα, ιδανικά, χωράει 8ΚΒ αλλά πολλές φορές δεν μπορούμε να εκμεταλλευτούμε όλον τον χώρο καθώς θα πρέπει να περιέχει ακέραιο αριθμό εγγραφών, οπότε αν δεν χωράει μια εγγραφή στον περισευούμενο χώρο πηγαίνει στην επόμενη σελίδα.

    Οι σελίδες οργανώνονται σε "extents". Κάθε extent περιέχει 8 σελίδες, όμως όχι απαραίτητα από τον ίδιο πίνακα. Απλουστευμένα, αυτό που κάνει το DBCC SHOWCONTIG είναι να διαβάζει όλες τις εγγραφές στη σειρά και να μετράει πόσες φορές αναγκάστηκε να κάνει jump (switch) γιατί δεν βρήκε την εγγραφή που περίμενε αλλά κάποια άλλη. Αυτό το switch μπορεί να γίνει από page σε page μέσα στο ίδιο extent ή από page σε page σε διαφορετικό extent. To πλήθος των switches είναι και ο δείκτης του fragmentation σε έναν πίνακα.

    Γυρίζοντας στο παράδειγμα, έχουμε 182 extents και 181 switches, δηλαδή ιδανική κατάσταση.

    Επίσης, τα extents είναι σχεδόν πλήρη (7.9 Avg. Pages per Extent), πράγμα πολύ καλό.

    Οι 1431 σελίδες είναι (ιδανικά) 179 extents άρα αυτό που έχουμε σε σχέση με τα 179, δηλαδή το Scan Density είναι πολύ καλό στο 98.35%.

    Τώρα, ως προς το Logical Scan Fragmentation και το Extent Scan Fragmentation.

    Αυτά τα νούμερα έχουν νόημα όταν έχουμε τουλάχιστον ένα clustered index πάνω στον πίνακα. Είναι λίγο δύσκολο να εξηγήσω πως βγαίνει αυτή η τιμή καθώς θα πρέπει να γράψω αρκετά περί IAM pages, page pointers, κλπ. Γενικά, αυτά τα νούμερα δείχνουν πόσο καλά είναι οργανωμένo το clustered index του πίνακα και όσο πιο κοντά στο μηδέν είναι η τιμή, τόσο το καλύτερο.

    Τέλος, το Avg. Bytes Free per Page και το Avg. Page Density δείχνουν τον ελεύθερο χώρο κατά μέσο όρο και την πυκνότητα των σελίδων αλλά εδώ θέλει προσοχή. Ο SQL Server κάνει τα I/O operations ανά σελίδα. Δηλαδή αν θέλω να διαβάσω έστω και μία εγγραφή θα διαβάσω (υποχρεωτικά) και τις υπόλοιπες της ίδιας σελίδας. Έτσι, όσο πιο γεμάτη είναι μια σελίδα, τόσες περισσότερες εγγραφές διαβάζω με ένα read, τουτέστιν αν θέλω να διαβάσω όλον τον πίνακα θα χρειαστώ λιγότερα I/O's,. Προσοχή όμως! Αυτό δεν είναι απαραίτητα καλό, γιατί αν κάνω πολλά write operations, τότε οι γεμάτες σελίδες θα έχουν ως αποτέλεσμα πολλαπλά page splits (όταν έχω clustered index σε μια σελίδα και προσπαθώ να εισάγω μια εγγραφή, αυτή θα πρέπει να πάει σε συγκεκριμένη θέση, οπότε αν δεν χωράει θα σπάσει τη σελίδα σε δύο μοιράζοντας τις εγγραφές) που έχουν κόστος.

    Άρα, καλά τα νουμεράκια που λέει το DBCC SHOWCONTIG αλλά προσοχή στην ερμηνεία τους γιατί το αν είναι καλό ή κακό ένα αποτέλεσμα εξαρτάται πολύ από την χρήση του πίνακα.


    Vir prudens non contra ventum mingit
  •  05-07-2006, 13:01 14430 σε απάντηση της 14429

    Απ: Περί συντήρησης

     KelMan wrote:

    Τέλος, το Avg. Bytes Free per Page και το Avg. Page Density δείχνουν τον ελεύθερο χώρο κατά μέσο όρο και την πυκνότητα των σελίδων αλλά εδώ θέλει προσοχή. Ο SQL Server κάνει τα I/O operations ανά σελίδα. Δηλαδή αν θέλω να διαβάσω έστω και μία εγγραφή θα διαβάσω (υποχρεωτικά) και τις υπόλοιπες της ίδιας σελίδας. Έτσι, όσο πιο γεμάτη είναι μια σελίδα, τόσες περισσότερες εγγραφές διαβάζω με ένα read, τουτέστιν αν θέλω να διαβάσω όλον τον πίνακα θα χρειαστώ λιγότερα I/O's,. Προσοχή όμως! Αυτό δεν είναι απαραίτητα καλό, γιατί αν κάνω πολλά write operations, τότε οι γεμάτες σελίδες θα έχουν ως αποτέλεσμα πολλαπλά page splits (όταν έχω clustered index σε μια σελίδα και προσπαθώ να εισάγω μια εγγραφή, αυτή θα πρέπει να πάει σε συγκεκριμένη θέση, οπότε αν δεν χωράει θα σπάσει τη σελίδα σε δύο μοιράζοντας τις εγγραφές) που έχουν κόστος.

    Άρα, καλά τα νουμεράκια που λέει το DBCC SHOWCONTIG αλλά προσοχή στην ερμηνεία τους γιατί το αν είναι καλό ή κακό ένα αποτέλεσμα εξαρτάται πολύ από την χρήση του πίνακα.

    Άρα στους Heavy-duty πίνακες θα πρέπει να έχω σχετικά μικρό fill factor στους indexes ;
    Το καταλαβαίνω καλά Μάνο ;


    Πάνος Αβραμίδης
  •  05-07-2006, 13:16 14433 σε απάντηση της 14429

    Απ: Περί συντήρησης

    Ακριβώς! Όταν έχεις πολλά insert, update, delete θα πρέπει να ορίσεις το κατάλληλο fill factor. Κάνοντας monitor πως μεταβάλλονται τα περιεχόμενα των σελίδων θα μπορέσεις να βρεις ποιό είναι το βέλτιστο fill factor. Μιας και το fill factor δεν είναι κάτι που συντηρεί αυτόματα o SQL Server, θα πρέπει να κάνεις ένα περιοδικό maintenance plan και ο στόχος σου είναι να μην ανεβαίνει το fragmentation μεταξύ των δύο εκτελέσεων του maintenance plan. Προφανώς, όταν θα έχει τελειώσει το πρώτο maintenance plan θα πρέπει το DBCC να σου δείχνει αρκετό ελεύθερο χώρο στις σελίδες, ενώ πριν αν ξεκινήσει το δεύτερο maintenance plan θα πρέπει ο ελεύθερος χώρος να πλησιάζει το 0. Από εκεί και πέρα, ανάλογα με το αν υπάρχει χρονικό παράθυρο που να μπορείς να θέσεις τη βάση off line ή όχι, επιλέγεις αν θα κάνεις DBREINDEX ή INDEXDEFRAG.


    Vir prudens non contra ventum mingit
  •  05-07-2006, 13:27 14434 σε απάντηση της 14433

    Απ: Περί συντήρησης

    Ακριβώς αυτό ήθελα να σε ρωτήσω :
    Ισχύει ότι το DBREINDEX βάζει ένα table lock μέχρι να τελειώσει το operation;
    Να υποθέσω ότι και αν πάω μέσω (SQL DMO) ισχύει το ίδιο ;


    Πάνος Αβραμίδης
  •  05-07-2006, 13:34 14435 σε απάντηση της 14434

    Απ: Περί συντήρησης

    Ναι, το DBREINDEX είναι off-line operation ενώ το INDEXDEFRAG είναι on-line. Ρίξε μια ματιά για τις διαφορές τους στα BOL. Μέσω DMO δεν έχω κάνει κάτι τέτοιο, υποθέτω όμως ότι δεν αλλάζει κάτι...
    Vir prudens non contra ventum mingit
  •  05-07-2006, 13:40 14436 σε απάντηση της 14435

    Απ: Περί συντήρησης

    Ναι τα έχω δει ...
    Κάτι ακόμη : θα πρέπει μετά το reindexing να κάνω update τα statistics;


    Πάνος Αβραμίδης
  •  05-07-2006, 14:10 14437 σε απάντηση της 14436

    Απ: Περί συντήρησης

    To INDEXDEFRAG δεν κάνει update τα statistics σε αντίθεση με το DBREINDEX.

    Ρίξε μια ματιά εδώ: http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/ss2kidbp.mspx είναι ένα πολύ αναλυτικό άρθρο.


    Vir prudens non contra ventum mingit
  •  05-07-2006, 14:24 14439 σε απάντηση της 14437

    Απ: Περί συντήρησης

    Ευχαριστώ για άλλη μια φορά,
    rector ...
    Το είχα το άρθρο αλλά, δεν είχα προσέξει το περί statistics ...
    Τώρα τί αλλάζει στον 2005 όσον αφορά στο reindexing ;


    Πάνος Αβραμίδης
  •  06-07-2006, 08:48 14457 σε απάντηση της 14439

    Απ: Περί συντήρησης

    Στο what's new δεν έχω δει κάτι και στα BOL λέει τα ίδια, οπότε νομίζω δεν υπάρχει καμιά αλλαγή σε αυτόν τον τομέα...
    Vir prudens non contra ventum mingit
  •  06-07-2006, 09:07 14458 σε απάντηση της 14457

    Απ: Περί συντήρησης

    Όποιος ψάχνει βρίσκει... Δεν κοίταζα στο σωστό σημείο. Στον SQL Server 2005 για πολλά DBCC statements έχουν βγει αντίστοιχα TSQL statements με στόχο να περιοριστεί η χρήση του DBCC καθώς (υποτίθεται) ότι μπορεί σε μελλοντικές εκδόσεις να μην υποστηρίζεται.

    Μπορείς λοιπόν να χρησιμοποιήσεις το νέο ALTER INDEX statement για το reindex το οποίο διαθέτι ένα switch ONLINE = { ON | OFF } (ισχύει όμως μόνο στην Enterprise έκδοση του SQL Server) και κάνει επίσης update των statistics (σε όλες τις εκδόσεις).
    Vir prudens non contra ventum mingit
  •  06-07-2006, 12:05 14464 σε απάντηση της 14458

    Απ: Περί συντήρησης

    Ok ...
    Πηγαίνοντας παρακάτω :
    Τι άλλα integirty cheks θεωρείτε ότι πρέπει να κάνει κανείς
    πριν μιλήσουμε για backup και truncation των logs κλπ.;

    Ή μάλλον :
    άρχισα σωστά με το θέμα του reindexing ή κάτι άλλο θα πρέπει
    να προηγηθεί...

    Εν ολίγοις, γενικότερα, τι πρέπει να κάνω και με ποια σειρά ;


    Πάνος Αβραμίδης
Σελίδα 1 από 2 (18 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems