需要SQL Server冻结的Ghost清理解决方法


15

我有几张表,行数在5M和1.5G之间

每个表都有其BLOB字段,其大小从100字节到30 MBytes不等,并存储为“行外的大值类型” = ON

表存储在不同的文件组中,每个3-4个文件存储在不同的磁盘上@不同的LUNs @快速SAN

这些表每天增长5-100 Gb,并具有60万-150万行

经过一定时间(从2周到6个月不等)后,某些行将被删除或移至归档DB,因此-工作表中没有任何行超过6个月的行。

服务器的当前配置:

  • SQL Server引擎是2008 R2 SP1 Enterprise @ 24核@ 64Gb RAM
  • SQL Server运行时带有额外的启动标志:

-T 3640; (无需为存储过程中的每个语句向客户端发送DONE_IN_PROC消息。这类似于SET NOCOUNT ON的会话设置,但是当设置为跟踪标志时,将以这种方式处理每个客户端会话)

-T 1118;(将tempDB中的分配从一次1pg(对于前8页)切换到一个范围。)

-T 2301;(启用特定于决策支持查询的高级优化。此选项适用于大型数据集的决策支持处理)

-T 1117;(一次增长所有数据文件,否则轮流进行。)

-E; (增加为文件组中的每个文件分配的扩展区数。此选项对于运行索引或数据扫描的用户数量有限的数据仓库应用程序可能会有所帮助)

-T 834;(导致SQL Server使用Windows大页分配用于分配用于缓冲池,存储 http://msdn2.microsoft.com/en-us/library/aa366720.aspxhttp://support.microsoft。 com / kb / 920093

  • SQL Server使用大页面扩展
  • SQL Server利用快速文件初始化选项
  • 所有数据库的AUTOSHRINK均关闭

问题是 -从服务器的正常运行时间(从几天到几个月)开始,GHOST CLEANUP拒绝进行强制清理,而只是执行其通常的工作-在几秒钟内清理几页(which is seen thru Extended Events),这不合适,因为它无法清理所有已删除的行

从SQL Server 2005 RTM Enterprise时代开始,问题仍然存在

如何尝试解决此问题:

  • 试图对表的聚集索引强制执行SCAN操作
  • 试图强制执行SCAN操作,其中涉及表的聚集索引上的BLOB列的所有内容
  • 系统sp_clean_db_free_space和sp_clean_db_file_free_space
  • 为数据库中的所有文件和页面手动dbcc cleanpage(@dbid,@ fileid,@ page)
  • 聚集索引重建和重组
  • 重新建立资料库
  • DBCC强制清理

  • 当我运行查询时:

    select * 
    from sys.dm_db_index_physical_stats(db_id(), object_id('ProblemTable'), 1, 0, 'detailed')

    我看到了数以千万计的幽灵记录,但仅适用于LOB_DATA的分配单元类型

唯一的帮助是:

  • 使用SHUTDOWN命令停止服务器或重新启动整个主机-重新启动GHOST CLEANUP进程运行几个小时后,实际上会清除所有重影的记录,这很有帮助
  • 具有EMPTYFILE选项的DBCC SHRINKFILE-将所有数据从一个文件移动到其他文件或新创建的文件只能清除该文件中的幻影记录-问题是我真的讨厌收缩操作。一个文件需要3-4天

问题 -是否存在任何程序化(优选的)或维护方式来强制进行GHOST CLEANUP而不造成服务器停机,因为服务器停机造成的成本过高,甚至无法接受-每小时的成本从数千美元到数万美元不等

这里发现的问题与我的一样:

和这里是一样的:

Answers:



3

这种问题应该交给CSS,以便他们可以与您一起解决问题。您可能拥有软件保证和支持合同。如果您不花几百美元,那么重新启动实例每小时需要花费数千美元,这不算什么大不了的事。

您是否尝试过关闭数据库然后使其联机?这将导致崩溃恢复运行,并可能导致幻影清理。

您经常在桌子上写字吗?我经常是指所有时间?

对于MSKB 932115,您是否看到只在所有文件中保留了幻像记录,还是正在清理文件组中的第一个文件?

为什么使用-T1117和即时文件init?


1.我绝对会去MS支持的。2.如果关闭数据库,则它会前后滚动约10-30分钟,这是不可接受的。3. GC正在运行,但未处理已删除的行外LOB条目。4.写入表的时间取决于一天中从20到600次每秒的写入时间,并且一直在执行。5. DB的第一个文件未使用-它没有大表并且仅用作系统存储,因此-根本没有任何虚幻记录。
奥列格·多克

使用-T1117时,我只想将所有负载分散在多个文件之间,而是当文件组只剩下一个文件时,那里仍然有可用空间-它开始在PFS的LATCH上变慢,即时文件初始化可最大程度地减少文件增长的时间,因为增量设置为每转10-50 Gb。我不能简单地将文件设置得尽可能大,因为它是完全不可预测的-哪些文件将在今天获得数据以及以何种数量获得数据。要求SAN管理员添加更多的空间比预测应该向其添加空间的WHom简单。
奥列格·多克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.