Lee*_*DBA 3 performance sql-server backup
如果您执行...
BACKUP DATABASE [DB_Name] TO DISK=N'c:\backups\db_name.bak' WITH STATS=10
Run Code Online (Sandbox Code Playgroud)
这将执行单线程还是多线程写入?
我们的服务器支持公司建议我们,如果我们对备份进行多线程处理,我们将获得更好的磁盘写入性能。他们建议我们 SQL 备份是多线程的,但我认为上面的语句是单线程的。如果我们指定要写入的多个磁盘,那么它将跨多个设备对备份进行条带化,因此根据我的理解是多线程的。
如果我在备份处理时执行以下 T-SQL,我可以看到执行备份的 SPID 有多个进程,但似乎只有一个进程写入磁盘,我认为其他进程正在读取和执行其他操作。这只是我提到问题的写线程。
USE MASTER
GO
SELECT *
FROM sys.sysprocesses p
INNER JOIN sys.dm_exec_requests r ON p.spid = r.session_id
WHERE spid=(spid of backup T-SQL)
Run Code Online (Sandbox Code Playgroud)
提前致谢。
备份到多个文件可能也是您的顾问所指的内容。如果您在单个磁盘/阵列上备份多个文件,您会经常看到改进(尽管通常不大),直到您明显使源和目标 IO 路径饱和为止。
BACKUP DATABASE [MyDatabase]
TO
DISK = N'Z:\backup\MyDatabase_File1.bak'
, DISK = N'Z:\backup\MyDatabase_File2.bak'
, DISK = N'Z:\backup\MyDatabase_File3.bak'
, DISK = N'Z:\backup\MyDatabase_File4.bak'
WITH
NAME = N'MyDatabase - Full Backup'
, INIT
, STATS = 10
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 2008+,压缩是明显的补充。如果没有,尝试使用 BUFFERCOUNT、BLOCKSIZE 和 MAXTRANSFERSIZE 选项会有所收获。Paul Randall 关于高级备份和还原选项的文章是一个很好的起点。
归档时间: |
|
查看次数: |
4242 次 |
最近记录: |