Πώς βρίσκουμε την αύξηση του μεγέθους μίας βάσης δεδομένων μέσα στον χρόνο σε SQL Server

Πώς βρίσκουμε την αύξηση του μεγέθους μίας βάσης δεδομένων μέσα στον χρόνο σε SQL Server
Πώς βρίσκουμε την αύξηση του μεγέθους μίας βάσης δεδομένων μέσα στον χρόνο σε SQL Server

Πολύ συχνά θα χρειαστεί να κάνουμε μια εκτίμηση του χώρου που θα χρειαστεί μελλοντικά μια βάση δεδομένων στον SQL Server. Για να γίνει αυτό χρειάζεται να γνωρίζουμε τον ρυθμό αύξησης του χώρο που χρησιμοποιείται από την βάση δεδομένων.

Που θα βρούμε την πληροφορία

Ότι χρειαζόμαστε υπάρχει στη συστημική βάση msdb και πιο συγκεκριμένα στον πίνακα backupset. Στον πίνακα υπάρχει το πεδίο backup_size που περιέχει το μέγεθος της βάσης και το compressed_backup_size που είναι το μέγεθος που compressed backup που πάρθηκε.

Η πληροφορία αυτή κρατιέται κάθε φορά που παίρνουμε backup μία βάση. Από default η πληροφορία στην msdb δεν σβήνεται αλλά κρατιέται για πάντα. Για να σβήστει ή τρέχουμε κάποιο maintenance plan με cleanup task ή την procedure msdb.dbo.sp_delete_backuphistory.

Πως λειτουργεί

Με το παρακάτω query μπορούμε να έχουμε το μέγεθος της βάσης κάθε φορά που η βάση είχε παρθεί backup. Έτσι μπορούμε να κάνουμε την εκτίμηση μας μέσα στον χρόνο.

*Βγάζοντας το σχόλιο από το πεδίο and msdb.dbo.backupset.database_name = ‘db_test’ μπορούμε να επιλέξουμε συγκεκριμένη μόνο βάση:

SELECT
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) as Server_Name,
   msdb.dbo.backupset.database_name,
   cast((msdb.dbo.backupset.backup_size/1024/1024) as int) as  size_in_MB,
   cast((msdb.dbo.backupset.backup_size/1024/1024/1024) as int) as  size_in_GB,
   DATEPART(year,[backup_start_date]) as Year,
   DATEPART(month,[backup_start_date]) as Month,
   DATEPART(DAY,[backup_start_date]) as Day,
   msdb.dbo.backupset.backup_start_date
FROM   msdb.dbo.backupmediafamily
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE 1=1
--and (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102)   between GETDATE()-359 and GETDATE()-365)
and msdb.dbo.backupset.type ='D'
--and msdb.dbo.backupset.database_name = 'db_test'
ORDER BY
   msdb.dbo.backupset.database_name,
   msdb.dbo.backupset.backup_finish_date desc
Πώς βρίσκουμε την αύξηση του μεγέθους μίας βάσης δεδομένων μέσα στον χρόνο σε SQL Server

Πως θα μπορούμε να δούμε το μέγεθος της βάσης πριν έναν χρόνο

Αν βγάλουμε από σχόλιο τον παρακάτω κώδικα στο where statement μπορούμε να δούμε μόνο τις εγγραφές για τα backups που πάρθηκαν στη βδομάδα πριν έναν ολόκληρο χρόνο:

and (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102)   between GETDATE()-359 and GETDATE()-365)

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση