暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server NUL 设备

SQLServer 2022-08-04
1161


SQL Server 存在一种 NUL 设备(注意不是 NULL),它是一个黑洞,是文件系统中的一个特殊“文件”。NUL 可以在 Windows 命令行中使用,其类似 Linux 系统中的 /dev/null,任何写入 NUL 的东西都会被丢弃。


当我们对某个数据库执行完整备份的时候,最简单的SQL如下所示:

    BACKUP DATABASE AdventureWorks2012 TO DISK = N'AdventureWorks2012.BAK'


    已为数据库 'AdventureWorks2012',文件 'AdventureWorks2012' (位于文件 1 上)处理了 24328 页。
    已为数据库 'AdventureWorks2012',文件 'AdventureWorks2012_log' (位于文件 1 上)处理了 2 页。
    BACKUP DATABASE 成功处理了 24330 页,花费 4.103 秒(46.326 MB/秒)。


    执行完成后,在实例的默认备份路径可以找到其备份文件。实例的默认备份路径可通过以下SQL查询。

      DECLARE @BackupDest VARCHAR(200)
      EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',N'Software\Microsoft\MSSQLServer\MSSQLServer',N'BackupDirectory', @BackupDest OUTPUT, 'no_output';
      SELECT @BackupDest


      如果利用 NUL 设备呢?SQL Server 中备份至NUL设备有2种写法,NUL 后面加上冒号也是可以的。

        BACKUP DATABASE AdventureWorks2012 TO DISK = N'NUL' 
        GO
        BACKUP DATABASE AdventureWorks2012 TO DISK = N'NUL:'
        GO


        已为数据库 'AdventureWorks2012',文件 'AdventureWorks2012' (位于文件 1 上)处理了 24328 页。
        已为数据库 'AdventureWorks2012',文件 'AdventureWorks2012_log' (位于文件 1 上)处理了 2 页。
        BACKUP DATABASE 成功处理了 24330 页,花费 1.499 秒(126.803 MB/秒)。


        NUL 设备可以判断备份的读吞吐量,即使你备份至多个NUL设备,IOPS也是差不多的,没什么效果。备份至NUL设备主要是读取数据,写数据并没有写入具体的磁盘中。

          BACKUP DATABASE AdventureWorks2012 TO DISK = N'NUL',DISK = N'NUL',DISK = N'NUL',DISK = N'NUL' ,DISK = N'NUL'


          那么,备份至NUL设备有什么用呢?

          • 备份吞吐量验证或测试,上面备份至不同设备可以看到耗时不同,NUL设备可以验证读IOPS,作为参考可以验证写IOPS(如上结果 46.326 MB/秒与126.803 MB/秒)

          • 长期没有进行日志备份,日志会非常大,备份至文件系统耗时长,备份至NUL设备后再收缩(也可以设置简单模式直接收缩文件)。

          • 开发或测试环境配置了相关高可用,完整模式下只能备份日志使其重用,但又没必要保留日志备份,可直接备份至NUL设备。

          • MSSQL 2016 及以上版本配置AlwaysOn AG,使用 automatic seeding 功能,配置可用性数据库前需要备份,可将数据库备份至NUL设备后再初始化同步。


          如果你的环境要求不能中断备份链,但又打算在生产环境上进行测试,你可以在备份时加上参数 COPY_ONLY 进行备份。当然,备份时读取数据的影响与正常备份到文件一样,所以生产环境验证时需要专业人员确认其影响范围。




          文章转载自SQLServer,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论