SQL 服务器备份消息

Ale*_*r 5 performance sql-server backup

您能否对 SQL 服务器备份消息稍作说明

例如 :

BACKUP DATABASE 在 1945.648 秒(79.088 MB/秒)内成功处理了 19696388 页。

例如,我们有一个带数据库的磁盘,我们有单独的磁盘用于备份,这是否意味着 79 MB/秒是一个磁盘以 40 mb/秒的速度读取数据进行备份,另一个磁盘以 40 mb 的速度写入数据,总和它给了我们 79 mb/sec 的速度,对吗?

Ran*_*gen 12

让我们首先了解读者/作者线程的概念

在备份期间,SQL Server 为数据库文件所在的每个卷创建一个读取器线程。读取器线程只是读取文件的内容。每次读取文件的一部分时,它都会将它们存储在缓冲区中。有多个缓冲区在使用,所以只要有空闲缓冲区要写入,读取器线程就会继续读取。SQL Server 还为每个备份设备创建一个写入线程,以将缓冲区的内容写入磁盘或磁带。写入线程将数据从缓冲区写入磁盘或磁带。写入数据后,读取器线程可以重用缓冲区。

来源

回答

所以是的,当读取器线程正在读取页面并且写入器线程将页面写入单独的磁盘时,处理页面的时间将受到两者的影响。

但是,这并不意味着79.088 MB/sec可以被 2 整除。

这意味着读操作在 运行,~79.088MB/sec写操作也在 运行~79.088MB/sec。速度由这两个操作中最慢的一个决定,因为这两个操作都是从多个缓冲区读取和写入(只要BUFFERCOUNT设置正确/未添加到命令中)。

结果,这些缓冲区填充太慢/清除速度不够快是行动中的瓶颈。

验证这一点的另一种方法是计算MB/sec* 备份持续时间。这将匹配您的数据库大小减去可用空间。


测试你的阅读速度

如果您想知道数据量以及从磁盘读取数据的速度,您可以备份到“NUL”

BACKUP DATABASE DBName TO DISK = 'NUL' WITH COPY_ONLY;
Run Code Online (Sandbox Code Playgroud)

就我而言,我最终得到了 122.406 MB/sec


测试你的写作速度

要知道你能写多快,你可以使用Crystaldiskmark

使用Seq Q32T1模拟备份操作写入。

来源

这是我想备份到的慢速目标驱动器上弹出的内容。

在此处输入图片说明


将两个和两个放在一起

如果我然后将驻留在D (数据)和 L (日志)驱动器上的数据库的备份命令运行到我之前使用 CrystalDiskMark ( E )检查过的磁盘。

BACKUP DATABASE DBName TO DISK = 'E:\Folder\DbName.BAK';


Processed 703088 pages for database 'DbName', file 'Database' on file 1.
Processed 2 pages for database 'DbName', file 'Database' on file 1.
BACKUP DATABASE successfully processed 703090 pages in 50.198 seconds (109.424 MB/sec).
Run Code Online (Sandbox Code Playgroud)

我们看到备份操作的读取部分是我系统的瓶颈。


sep*_*pic 5

BACKUP DATABASE 在 1945.648 秒(79.088 MB/秒)内成功处理了 19696388 页。

您在此处看到的速度是对每处理数据量的整个持续时间进行简单划分的结果backup

在您的情况下,备份持续时间是1945.648 s,处理的数据量是19696388 pages * 8Kb / 1024 = 153.878,03125 Mb

speed = 153.878,03125 Mb / 1945.648 s = 79,08831980399332 Mb/s,这是什么消息都在谈论。

在 Randi Vertongen 的例子中:

BACKUP DATABASE 在 50.198 秒(109.424 MB/秒)内成功处理了 703090 页。

Data volume = 703090 pages * 8Kb / 1024 = 5.492,890625 Mb
Run Code Online (Sandbox Code Playgroud)

speed = 5.492,890625 Mb / 50.198 s = 109,4244915136061 Mb/s

这仅意味着您的backup speedis79,088而没有别的,可能有 19 秒读取 + 60 秒写入,但您无法从整个操作时间和处理量中推断出它。