你的位置:首页 > 数据库

[数据库]WaitType:PARALLEL_BACKUP_QUEUE


在取消执行 Restore HeaderOnly 命令时,发现取消不了,Session长时间处于PARALLEL_BACKUP_QUEUE 等待状态。

RESTORE HEADERONLYfrom disk ='\\xxx\yyy.bak'

官方文档:Occurs when serializing output produced by RESTORE HEADERONLY, RESTORE FILELISTONLY, or RESTORE LABELONLY.

PARALLEL_BACKUP_QUEUE 等待表示,在使用多进程还原数据库的过程中,一个进程在等待访问输出结果集。这个结果集被并发的所有进程共享,因此,在一个进程写入新的数据之前,结果集中的数据必须同步。就是说,还原数据库的多个进程必须以序列化的方式输出结果集。

现在的问题是,等待已经持续了6-7个小时了,如何消除这种等待状态?既然kill 不能将该session取消,只能将backup device所在server重启。期待高人指点温和的做法.....

 

查看MSDN文档,发现 RESTORE HEADERONLY 会将扫描backup media 上的所有backup set,一个backup media可能存储多个backup set,扫描所有的backup set 十分耗时。建议使用RESTORE LABELONLY,该命令只会读取backup media的头部信息。

如图,只读取Meida Header,能够快速获取backup meida包含的信息,但是Header 包含的信息十分有限。

MSDN:RESTORE HEADERONLY looks at all backup sets on the media. To get a quick look at the media without getting information about every backup set, use RESTORE LABELONLY. Executing RESTORE LABELONLY is a quick way to find out what the backup media contains. Because RESTORE LABELONLY reads only the media header.

 

引用《PARALLEL_BACKUP_QUEUE》:

This wait type is when a thread in a parallel restore is waiting for access to an output result set. The result set is being shared by the parallel threads so there has to be synchronization around entering new rows into it.

译文:这种等待表示,在并发(多进程)还原的过程中,一个进程在等待访问输出结果集。这个结果集被并发的所有进程共享,因此,在写入新的数据之前,结果集中的数据必须同步。