Sql server backup internals

8
SQL SERVER BACKUP INTERNALS

Transcript of Sql server backup internals

Page 1: Sql server backup internals

SQL SERVER BACKUP

INTERNALS

Page 2: Sql server backup internals

About MeHamid J. FardI am SQL Server Data Platform Expert with more than 9 years’ of professional experience, I am currently Microsoft Certified Master: SQL Server 2008, Microsoft Certified Solutions Master: Charter-Data Platform, Microsoft Data Platform MVP and CIW Database Design Specialist. After a few years of being a production database administrator I jumped into the role of Data Platform Expert. Being a consultant allows me to work directly with customers to help solve questions regarding database issues for SQL Server.

Page 3: Sql server backup internals

How SQL Server Backup Works!

1- Checkpoint (Few times)2- Start Buffering Data (Async I/O)

1- Writing Buffered Data2- Exchange the Buffers

Page 4: Sql server backup internals

SQL Server Backup Buffer Exchange

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Read Thread Write Thread

Page 5: Sql server backup internals

SQL Server Backup Options• BufferCountSpecifies the total number of I/O buffers to be used for the backup operation. You can specify any positive integer; however, large numbers of buffers might cause “out of memory” errors because of inadequate virtual address space in the Sqlservr.exe process.

• MaxTransferSizeSpecifies the largest unit of transfer in bytes to be used between SQL Server and the backup media. The possible values are multiples of 65536 bytes (64 KB) ranging up to 4194304 bytes (4 MB).

Page 6: Sql server backup internals

How Many Concurrent Backup Works!

Controller

Worker #1

Read Stream Worker

#2

Write Stream Worker

#3

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

Buffer

DATABASE BACKUP COMMAND

Page 7: Sql server backup internals

SQL Server Backup Workers and Tasks

Backup Database Tempdata to disk = 'C:\temp\backup1.bak', disk = 'C:\temp\backup2.bak',disk = 'C:\temp\backup3.bak',disk = 'C:\temp\backup4.bak'

With Init, Format, Buffercount =8 , Maxtransfersize=65536;

Stream Reader Thread

Stream Writer Threads

Controller Thread

Page 8: Sql server backup internals

What SQL Server Backup is Doing!

WARNING:This trace flags should be used under the guidance of Microsoft SQL Server support. They are used in this post for discussion purposes only and may not be supported in future versions.

DBCC TRACEON (3004 , 3605 , -1);

Database TempDataStarting up database 'TempData'.Backup: Media openBackup: Media ready to backupBackup: Clearing differential bitmapsBackup: Bitmaps clearedBackupDatabase: Checkpoint doneBackupManager::SyncWithLog: SEReplLSN : 0 (0x00000000:00000000:0000)BackupManager::SyncWithLog: Start LSN : 282000000023200037 (0x0000011a:000000e8:0025)Backup: Scanning allocation bitmapsBackup: Done with allocation bitmapsBackupDatabase: Work estimates doneBackup: Leading metadata section doneBackup:Copying dataBackup: DBReaderCount = 2…..BackupDatabase: Database files doneBackup:Copying logBackupDatabase : Log files doneBackup: Trailing config doneBackup: MBC doneBackupDatabase: Writing history recordsDatabase backed up. Database: TempData, creation date(time): 2015/10/20(20:05:41), pages dumped: 1553, first LSN: …Writing backup history recordsBACKUP DATABASE successfully processed 338 pages in 0.087 seconds (30.267 MB/sec).BackupDatabase: Finished