Jump to content
  • entries
    292
  • comments
    368
  • views
    59912

About this blog

News about Microsoft SQL Server and other databases...

Entries in this blog

Margaritari #6

Τις τελευταίες ημέρες είχα την ευτυχία να ανακαλύψω μερικά ωραία ασχολούμενος με μια βάση 1. Δήλωση πεδίου σε πίνακα σαν varchar(1) not null 2. Δήλωση πεδίου σε πίνακα που κρατάει το τηλέφωνο σαν varchar(max) not null (μεγάλε που θα πάρεις τηλέφωνο?)

antonch

antonch

Identify slow running queries with SQL Profiler trace data

Με αφορμή το τελευταίο μου SQL Server Saturday Night που σαν θέμα είχε τον SQL Server Profiler και μπορείτε να το δείτε εδώ και στο οποίο αναφέρθηκα στο συγκεκριμένο θέμα αποφάσισα να γράψω το συγκεκριμένο ώστε να δώσω περισσότερες λεπτομέρειες. Όπως ανέφερα και στη παρουσίαση μου το ποια events θα διαλέξει κάνεις έχει περισσότερο να κάνει με την εμπειρία που έχει αλλά και την ικανότητα με αυτά να εντοπίσει το εν λόγω πρόβλημα. Προσωπικά επιλέγω αυτά που θα σας παραθέσω παρακάτω αλλά αυτό φυ

antonch

antonch

Ctrl+0 is the key combination to insert NULL value in SSMS

Πριν από λίγο ήμουν με ένα φίλο και συνάδελφο και κάναμε διάφορα πραγματάκια σε μία βάση. Κάποια στιγμή θέλαμε να αλλάξουμε την τιμή από ένα πεδίο σε ένα record σε null και βαριόμουν να κάτσω να γράψω ένα update statement. Έτσι άνοιξα τον SSMS και με την γνωστή διαδικασία δεξι κλικ Edit πάνω στο πίνακα που θέλω στην βάση μου πήγα στο πεδίο και πάτησα Ctrl+0 όπου αμέσα γίνεται null η τιμή του και το μόνο που έχεις να κάνει είναι να πας στην επόμενη εγγραφή για να γινει commit η αλλαγή σου. Η κίνη

antonch

antonch

10th SQL Saturday Night–SQLCLR, How & When to use

Λίγο πριν το Πάσχα λέω να κάνουμε ένα SQL Saturday Night το οποίο θα γίνει σύμφωνα με μια νέα φιλοσοφία όσον αφορά τον τρόπο διεξαγωγής του και συμμετοχής. Όσοι πραγματικά θέλουν να συμμετάσχουν στην ζωντανή παρουσίαση θα πρέπει να κάνουν registration ώστε να τους αποσταλθεί το link του Live Meeting. Η διαδικασία είναι απλή, και θα βελτιωθεί στο μέλλον. Με την ευκαιρία θα έρθετε σε επαφή με το SqlSchool.gr το οποίο είναι ακόμα στα πρώτα του βήματα και προδευτικά θα γεμίζει με υλικό. Φυσικά τ

antonch

antonch

Cumulative Update #7 for SQL Server 2008 R2

By Abhishek Sinha The Microsoft SQL Server Sustained Engineering team is proud to announce the release of SQL Server 2008 R2 Cumulative Update 7. Cumulative Update 7 contains a roll-up of hotfixes released since the initial release of SQL Server 2008 R2. CU#7 KB Article: http://support.microsoft.com/kb/2489376 Understanding Incremental Servicing Model for SQL Server SQL Server Support Information: http://support.microsoft.com/ph/2855 Previous Cumulative Update KB Articles

antonch

antonch

Day Tip: PAGEIOLATCH

Το PAGEIOLATCH wait type δείχνει το χρόνο που χρειάστηκε για να διαβαστεί μια σελίδα από το δίσκο και να μπει στην μνήμη (buffer cache)

antonch

antonch

Tip of the Day: sys.dm_os_buffer_descriptors

Η DMV αυτή δείχνει μια γράμμη για κάθε data page η οποία είναι στην buffer cache. Με το παρακάτω script μπορείς να δεις το ποσό σε MB που έχει δεσμευτεί από τις σελίδες που υπάρχουν για κάθε βάση μέσα στην buffer cache SELECT CASE database_id WHEN 32767 THEN 'ResourceDB' ELSE DB_NAME(database_id) END AS 'Database', COUNT(*)*8/1024 AS 'Cached Size (MB)' FROM sys.dm_os_buffer_descriptors GROUP BY DB_NAME(database_id),database_id ORDER BY 2 DESC

antonch

antonch

Tip of the Day: What is a Dirty Page?

Όταν μια σελίδα διαβάζεται από τον δίσκο και μπαίνει στην buffer cache θεωρείται ότι είναι μια Clean Page. Όταν όμως κάνω ένα transaction το οποίο την επηρεάζει (πάντα στην μνήμη) αυτή είναι μια Dirty Page (μπαίνει ένα mark στον header της) καθώς η εικόνα στην μνήμη είναι διαφορετική από αυτή στο δίσκο. Για να δω πόσες dirty pages έχω ανά βάση αρκεί να εκτελέσω το παρακάτω query που χρησιμοποιεί την sys.dm_os_buffer_descriptors SELECT db_name(database_id) AS 'Database',count(page_id) AS 'D

antonch

antonch

Tip of the Day#2: What CHECKPOINT operation does?

Η διαδικασία αυτή όταν  γίνεται μεταφέρει τις χαρακτηρισμένες ως dirty pages από την μνήμη (buffer cache) στο δίσκο (data file(s)) και αλλάζει στο header τους το status από dirty σε clean. Δεν αδείαζει-καθαρίζει την buffer cache από αυτές.

antonch

antonch

Tip of the Day: When Buffer Cache does clean?

Σε τακτά χρονικά διαστήματα ή σε περιπτώσεις που υπάρχει στέρηση σε μνήμη, ένα thread αναλαμβάνει να κάνει τον καθαρισμό της buffer cache από τις σελίδες που δεν έχουν πρόσφατα χρησιμοποιηθεί. Το thread αυτό ονομάζεται Lazywriter και ο τρόπος με τον οποίο αποφασίζει ποιες είναι αυτές που θα φύγουν από την buffer cache είναι και ονομάζεται Least Recently Used (LRU) policy. Least Recently Used policy Στο header της κάθε σελίδας όταν αυτή είναι στη μνήμη αποθηκεύονται πληροφορίες που κρατάνε

antonch

antonch

Tip of the Day #2: What DBCC DROPCLEANBUFFERS does?

Η DBCC DROPCLEANBUFFERS καθαρίζει την buffer cache μόνο από τις σελίδες που είναι χαρακτηρισμένες ως clean. Σε καμία περίπτωση δεν πειράζει όσες είναι dirty.

antonch

antonch

Tip of the Day: Πώς ορίζω το μέγεθος της Buffer Cache

Για να ορίσω το πόσο θα είναι ο χώρος που θα καταλαμβάνει η buffer cache αρκεί να ορίσω το Min και Μax Server Memory. Αυτά τα settings ορίζουν μόνο την buffer cache και όχι όλη την μνήμη που θα καταλαμβάνει ο SQL Server.

antonch

antonch

Poster for SQL Server Isolation Levels

Η λατρεία μου για τα poster είναι γνωστή. Ειδικά για αυτά που αφορούν τον SQL Server. Αν μάλιστα αυτά είναι χαριτωμένα, έξυπνα και λένε πολλά μου αρέσουν περισσότερο. Γενικά είμαι poster hunter. Χθες τυχαία ανακάλυψα αυτό που ακολουθεί το οποίο το έχει φτιάξει η Kendra Little (blog|twitter) το οποίο εξηγεί αρκετά όμορφα τα SQL Server Isolations Levels. Μπορείτε να το κατεβάσετε από το original link ή και από εδώ.

antonch

antonch

Tip of the Day: What DBCC FREEPROCCACHE does?

Διαγράφει από την στοιχεία από την plan cache. Αυτό μπορεί να γίνει είτε για όλα τα στοιχεία, είτε για συγκεκριμένο plan, είτε για όλα όσα αφορούν συγκεκριμένο resource pool.   Πρέπει να την χρησιμοποιούμε με σύνεση καθώς μπορεί να σβήσουμε πχ το πλάνο μιας stored procedure κατά λάθος. Αυτό σημαίνει ότι την επόμενη φορά που αυτή θα ζητηθεί να εκτελεστεί αυτή θα περάσει όλα τα στάδια (Parse,Optimize....) ώστε να μπει το πλάνο της ξανά μέσα στην plan cache και να εκτελεστεί και φυσικά να επαχρησ

antonch

antonch

Tip of the Day: What DBCC FREESYSTEMCACHE does?

Καθαρίζει όλα τα μη ενεργά/χρησιμοποιούμενα περιεχόμενα (cache entries) από όλες τις cache. Αν και ο SQL Server ενεργεί προκαταβολικά ώστε να γίνει αυτό, εντούτοις μπορώ χειροκίνητα να το κάνω αυτό εκτελώντας την DBCC FREESYSTEMCACHE ('ALL') Φυσικά το παραπάνω θα πρέπει να το κάνουμε μόνο εφόσον θέλουμε να καθαρίσουμε τα πάντα και φυσικά λαμβάνοντας υπόψη τα Remarks από τα BOL. Καλό είναι να εστιάζουμε την προσοχή μας σε συγκεκριμένο pool και να σβήνουμε αυτό εφόσον έχουμε δει ότι μας δημιο

antonch

antonch

Tip of the Day: Monitoring buffer cache size

Για να κάνω monitoring το μέγεθος της buffer cache αρκεί μέσα από το Performance Monitor Tool των Windows να ορίσω τους μετρητές: SQLServer: Memory Manager \ Total Server Memory (KB) Δείχνει το τρέχων μέγεθος της buffer cache. SQLServer: Memory Manager \ Target Server Memory (KB) Δείχνει το πάνω όριο της μνήμης που έχει εκείνη την στιγμή έχει ορίσει ο SQL Server ότι μπορεί να χρησιμοποιήσει για την buffer cache. Το νούμερο αυτό μπορεί να αλλάξει δυναμικά και αυτό γίνεται στις περιπτώσεις

antonch

antonch

Tip of the Day: AWE in 64 bit systems

Στον SQL Server υπάρχει το option AWE (μπορεί κανείς να το αλλάξει είτε με δεξί κλικ στον όνομα του server μέσα από το SSMS Properties\Memory είτε με την χρήση της sp_configure). Στην περίπτωση που είστε σε 64-bit system ακόμα και αν την ενεργοποιήσετε αυτή δεν λαβανετε υποψη, εκτός αν  δώσετε στο SQL Server service account το Lock Pages in Memory privilage και είστε σε Enterprise Edition. Στην αρχή ήταν μόνο για Enterprise Editon αλλά μετά από feedback Που δώθηκε στην Microsoft στον 200

antonch

antonch

NEW SSIS Transformation Tool–SSIS Balanced Data Distributor

Το Microsoft® SSIS Balanced Data Distributor (BDD) είναι ένα νέο SSIS transform, το οποίο παίρνει ένα single input και το κάνει distribute τα rows σε ένα ή περισσότερα outputs uniformly μέσω  multithreading. Ένα ακόμα βέλος στην φαρέτρα μας για το SSIS. Μπορείτε να το κατεβάσετε από εδώ

antonch

antonch

ΚΑΛΟ ΚΑΛΟΚΑΙΡΙ from SQL Saturday Nights

Αν και έχω αρκετό καιρό να διοργανώσω ένα SQL Saturday Night, θα ήθελα να σας ενημερώσω ότι αυτά δεν σταμάτησαν όπως ακούστηκε. Η αλήθεια είναι ότι σταμάτησαν κάπως απότομα αλλά έπεσε αρκετή δουλεία που δεν είχα την ευκαιρία να προετοιμαστώ για νέο. Κάποια στιγμή σκέφτηκα να κάνω ένα προς το τέλος του επόμενου μήνα όπου κάπως ξαλαφρώνω από δουλειά αλλά μάλλον χαμένο θα πάει καθώς θα είναι αρκετοί σε διακοπές και είναι δύσκολο σαββατόβραδο να είναι κλεισμένος κάποιος μέσα. Για όλους αυτούς το

antonch

antonch

DBCC IND

Αν και η συγκεκριμένη εντολή είναι ευρέως γνωστή και σίγουρα θα την έχετε βρει σε διάφορα sites εντούτοις θα γράψω και εγώ για αυτή καθώς θεωρώ ότι είναι μια σημαντική εντολή αν και είναι undocumented. Φυσικά μπορούμε με ασφάλεια να την χρησιμοποιήσουμε σε παραγωγικά συστήματα χωρίς φόβο και πάθος. Με αυτή μπορούμε να δούμε αναλυτικές πληροφορίες για τους indexes σε ένα συγκεκριμένο object ανά σελίδα. Η σύνταξη της εντολής είναι η παρακάτω DBCC IND ( {‘dbname’|dbid} , {‘objectname’

antonch

antonch

×
×
  • Create New...