【问题标题】:SQL Server: Why is the backup speed so slow?SQL Server:为什么备份速度这么慢?
【发布时间】:2018-06-15 21:21:52
【问题描述】:

我有一个这样的备份查询:

BACKUP DATABASE @temp_baza TO DISK = @temp_bak
BACKUP LOG @temp_baza TO DISK = @temp_log

它是这样由sqlcmd运行的:

sqlcmd -l 120 -S %SQL_SERVER% -i %KOPIA_KATALOG%backupPELNY.sql 
       -o %KOPIA_KATALOG%output_PELNY.txt -v NAZWA_BAZY="%NAZWA_BAZY%" 
       -v KOPIA="%PELNY_KOPIA%\"
       

output_PELNY.txt我有这样的结果:

BACKUP DATABASE successfully processed 645127 pages in 2819.651 seconds (**1.787 MB/sec**).

BACKUP DATABASE successfully processed 26338 pages in 227.348 seconds (**0.905 MB/sec**).

主数据库在一个磁盘上,备份在第二个磁盘上。

当我使用资源管理器在这两个磁盘之间复制文件时,我得到了大约 100 MB/s 的传输速度。

问题:

为什么备份速度这么慢 - 我的意思是不到 3MB/s?

备注:

  • Windows 2012 Essential + SQL Server 2008 R2 EXPRESS
  • 英特尔至强 E3-1270 v3 + 16GB 内存

【问题讨论】:

  • 如果您使用 SSMS(gui)运行备份,它是否有同样的速度问题?是否有默认打开备份压缩或加密的设置?由于您有 100 MB/s 的磁盘,在备份期间是否会受到 CPU 的限制?备份期间实际可用的 RAM 多少,即退回服务并尝试备份。这些只是一些想法。
  • 我只是忙,我会尝试使用 SSMS(gui 不是通过 SQLCMD 编写的脚本)
  • ... 我试图检查它是否与 CPU 有关,所以我只是使用 7za v18.5.0.0 来检查这将如何压缩 1GB 文件。所以为了测试我使用开放硬件监视器,这就是我可以说的:这个 CPU 永远不会使用超过 50% 的单个 CORE 并且永远不会超过 1.8GHz,其中最大值为 3.7GHz CPU 温度约为 49 摄氏度风扇速度是大约 6000 RPM 是否过热?
  • 没有压缩或加密。在这个系统上,总共有 16GB RAM,大约 50% 是免费的。
  • 目前我已经使用 SQL 2017 Express 升级了系统如果我使用 SSMS (GUI),那么在 Windows 性能监视器中,每个备份文件的读取速度为 7MB/s + 7MB/s 写入速度......在同时处理器利用率约为 1%,处理器时钟仅为 0,7 Ghz。所以我测试我的CPU是否有问题。我怎么做测试?当备份使用 SSMS 完成工作时,处理器仅使用了 1%,我使用 LZM2 和 8 线程运行 7Zip,CPU 自动升至 90% 和 3.3GHz。

标签: sql-server database backup database-backups


【解决方案1】:

为解决您的问题,请参考以下链接:

  1. Options to Improve SQL Server Backup Performance
  2. Is your SQL Server backup running slow? Here’s how you can speed it up
  3. Super-Fast Backup and Restore Throughput for SQL Server
  4. MS SQL Server backup optimization
  5. How to Make SQL Server Backups Go Faster

以下是download 的一些示例查询

为解决问题,我建议查询以下部分:

backup database DBNAME to disk='C:\1\DBNAME.bak' with buffercount=16 ,maxtransfersize=4194304

【讨论】:

  • 我可以确认使用后:with buffercount=16 ,maxtransfersize=4194304 问题消失了,这解决了其他情况,甚至更多,我的大多数客户目前已经减少(或多或少)备份所需的时间.
【解决方案2】:

SQL Server 2008 R2 Express 有以下限制:

  • 仅限于单个 CPU(此限制在 2012 年提高到“一个插槽或四个内核中的较小者”,因此可以使用多线程)
  • 1GB 内存
  • 10GB 数据库大小(每个数据库)

因此您的备份可能会受到 CPU 和/或内存的限制。

(当然,它提出了一个显而易见的问题:为什么要在服务器上使用 express 版本?为什么不使用更高版本的 SQL Server?)

参考:SQL Server 2008 R2 Express Database Size Limit Increased to 10GB

CPU 和内存限制如何? SQL 中是否更改了任何其他限制 Server 2008 R2 Express?

  • 不,数据库大小限制是我们在 SQL Server 2008 R2 Express 中更新的唯一限制。 SQL Server 2008 R2 Express 仍然受限 1 个 CPU 和 1 GB RAM。

【讨论】:

  • 升级到 SQL 2017 Express 后,备份速度没有变化。
  • 我在尝试 MS SQL EVALUTATION 后遇到了另一种情况。
  • 我还有几例这种类型的。有趣的是,在一种情况下,我们为新的 RAID1 矩阵添加了新磁盘。这是 2x500 GB SSD 磁盘。有趣的是RAID初始化过程真的很慢……我的意思是每10分钟1%。我认为这在某种程度上是相关的。
猜你喜欢
  • 1970-01-01
  • 2021-04-21
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 2018-02-24
  • 2012-04-30
相关资源
最近更新 更多