Prestanda – Kontrollera hur mycket databaserna växer
Enligt Gartner beror ca 80-85% av alla prestandaproblem på ökande datamängder enligt olika undersökningar, det kan alltså vara en bra idé att se hur mycket datamängderna ökar om vi får prestandaproblem. Har vi inte ett centralt repository eller ett tjusigt övervaknings/konfigurationssystem kan vi enkelt få fram den här informationen från varje enskild instans.
Vi ska titta på hur vi enkelt kan få fram en rapport över hur mycket en databas har växt genom att titta på MSDBs backuphistorik och mer specifikt dbo.backupset. För att göra det enkelt att få fram data och visa på ett bra sätt ska vi skapa en SSRS rapportfil .rdl som vi kan lägga till i Rapportmenyn i SSMS, jag har tidigare skrivit hur vi kan använda standarapporterna för att snabbt få fram viktig information om en instans och databas.
Vi börjar med att göra en lämplig fråga mot msdb.dbo.backupset. SSMS skickar in några parametrar vi kan använda, bla @ServerName och @DatabaseName. Vi använder @DatabaseName för att filtrera så att vi endast visar den databas vi har valt. Vi plockar även med kolumnen compressed_backup_size och visar den samt räknar ut komprimerings faktor. Använder vi inte komprimerade backuper kommer compressed_backup_size visa samma som backup_size och vi kommer få en komprimerings faktor på 1. Vi tar de 1000 senaste backuperna, gör vi daglig backup får vi ca 3 års backuper.
SELECT TOP 1000 database_name, backup_start_date,(backup_size / 1000000) as [Backup Size MB], (compressed_backup_size / 1000000) as [Compressed Backup Size MB],
(backup_size/compressed_backup_size) AS [Compression Ratio]
FROM msdb.dbo.backupset
WHERE type=’D’ and database_name= @DatabaseName
ORDER BY backup_start_date DESC
Nu är det dags att starta Data Tools (eller BIDS som det hette före 2012) och skapa en SSRS rapport. Vi väljer New Project och Report Server Project Wizard. Vi väljer att peka mot msdb databasen och skapa en tabulär rapport. Rapporten kallar vi ”Data Growth”
För att få en bättre grafisk presentation klickar vi på Toolbox på vänster sida och drar ut ett Chart objekt och väljer att skapa ett linjediagram som vi kopplar mot datum och backup size/compressed backup size kolumnerna. Vi sparar ner som en .rdl fil och sen startar vi SSMS och högerklickar på en databas, väljer Reports och Custom Repors. Vi bläddrar fram vår rapport fil, vi får i vanlig ordning en säkerhetsvarning att det kan finnas elaka frågor ute i verkligheten, kryssa för att inte fråga mer om detta samt klicka Run. Vår rapport dyker nu upp under Reports oavsett vilken databas vi högerklickat på, den dyker även upp när vi ansluter till andra instanser så vi har nu en rapport vi kan använda i hela vår SQL miljö.
Om vi högerklickar på en databas, klickar Reports och väljer ”Data Growth” rapporten kan vi nu se hur databasen växt på sistone.
Längst ner har vi valt att behålla tabell över data så att vi även kan se komprimerings faktor. Har vi en hyfsat hög komprimerings faktor kan det vara ide att använda ROW eller PAGE komprimering om vi kör SQL Enterprise edition, vi kommer att återkomma till detta längre fram när vi tittar mer på prestanda optimering.
Om du använder SQL 2005…
Backup komprimering introducerades först 2008 så ovan fråga kommer inte att fungera på en SQL 2005 eftersom compressed_backup_size kolumnen inte finns i backupset. Om du behöver en rapport till 2005 kan du antingen ta bort kolumnen eller göra en specifik rapport för 2005.
Ta bort en egen rapport from Report-menyn
Ta bort eller flytta din .rdl fil, klicka på rapporten igen så kommer SSMS inte att hitta rapporten och fråga om den ska plocka bort den från Reports menyn
/Fredrik