在 SQL Server 2012年或 SQL Server 2014 大表空间数据类型在生成索引时修复︰ 慢

错误 #: 194033 (内容维护) VSTS: 1494706

症状

当您尝试建立索引 (通过使用创建索引或 ALTER INDEX) 上大表空间数据类型时,Microsoft SQL Server 2012年或 SQL Server 2014年可能很好地运行。您可以找到许多对SOS_CACHESTORE和SOS_SELIST_SIZED_SLOCK的自旋锁争用。

解决方案

第一次修复该问题的SQL Server累积更新包


对于 SQL Server 2014年的累积更新 1/en-us/help/2931693

SQL Server 2012 sp1 的累积更新 7/en-us/help/2894115

SQL Server 的每个新累积更新包含以前的累积更新所包含的所有修补程序和所有安全修补程序。查看 SQL Server 的最新累积更新:


修补程序更新包信息可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。

如果此修复程序可供下载,则在此知识库文章顶部"提供修补程序下载"部分。如果未显示此部分,将申请提交到 Microsoft 客户服务和支持,以获取此修复程序。

注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰

http://support.microsoft.com/contactus/?ws=support注意:"修补程序下载可用"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

详细信息

锁保护公共语言运行时 (CLR) 过程高速缓存项。应用运算符或嵌套循环操作员,通常涉及到创建或更改索引的查询计划。联接操作的外侧是从空间的表返回行,推动空间的函数。每次调用函数时,可能使用自旋锁。查询运行时具有高的并行度,锁可能会成为一个瓶颈。下图是一种这样的空间计划。

Spatial plan

调用堆栈信息(000007fa`4a1889a0) sqldk!Spinlock<212,1,1>::SpinToAcquireWithExponentialBackoff+0xd3 (000007fa`4a17e3d0) sqldk!SOS_MemoryManager::GetAddressInfo64+0x9c
(000007fa`4a1843a0) sqldk!MemoryNode::GetAllocatorType+0x36
(000007fa`4a184320) sqldk!MemoryClerkInternal::FreePages+0x3c
(000007fa`4a237a30) sqldk!ISOSHost_MemoryClerkImpl::FreePages+0x6c
(0000005f`824ab1e0) SqlServerSpatial110!ArrayOverPages<CScanner::CChain,SOS_Or_CRT_Allocator<CScanner::CChain> >::~ArrayOverPages<CScanner::CChain,SOS_Or_CRT_Allocator<CScanner::CChain> >+0x64
(0000005f`824ab640) SqlServerSpatial110!CScanner::CChainList::~CChainList+0x49
(0000005f`82501af0) SqlServerSpatial110!COrientationChecker::COrientationScanner::`scalar deleting destructor'+0x58
(0000005f`825019d0) SqlServerSpatial110!COrientationChecker::EndPolygon+0x38
(0000005f`82502440) SqlServerSpatial110!CTiledConverter::ClearAttribute+0x8b
(0000005f`82505a40) SqlServerSpatial110!CGeodeticWrapper::ClearAttribute+0x36
(0000005f`824d3fc0) SqlServerSpatial110!PopulateShapes<CGeometrySinkD>+0x1be

(000007fa`4a2605f0) sqldk!XeSosPkg::spinlock_backoff::Publish+0x138
(000007fa`4a1828a0) sqldk!SpinlockBase::Sleep+0xc5
(000007fa`345f1b80) sqllang!Spinlock<211,1,1>::SpinToAcquireWithExponentialBackoff+0xee
(000007fa`345c58c0) sqllang!TCacheStore<CacheClockAlgorithm>::GetUserData+0xbf
(000007fa`34ecfd30) sqllang!CClrCache::LookupClrCacheObject+0x7b
(000007fa`34ed00f0) sqllang!CClrCache::GetClrExecCacheObjectForUdf+0x2e
(000007fa`34f723f0) sqllang!CTableValuedClrUdf::Init+0x53a
(000007fa`34e12680) sqllang!IStreamTVF::Init+0x2d
(000007fa`37974a70) sqlmin!CQScanTVFStreamNew::Open+0x54b
(000007fa`36dfbd10) sqlmin!CQScanNLJoinTrivialNew::GetRow+0x10f
(000007fa`3794d0e0) sqlmin!CQScanIndexSortNew::BuildSortTable+0x1b6
(000007fa`3794be30) sqlmin!CQScanIndexSortNew::OpenHelper+0x79
(000007fa`36ddfa30) sqlmin!CQScanNew::OpenHelper+0x41
(000007fa`36f19920) sqlmin!CQScanXProducerNew::Open+0xc8
(000007fa`36ebbfc0) sqlmin!FnProducerOpen+0x44
(000007fa`34f0b360) sqllang!UM_LoopbackForParallelExecution+0x1a4

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

参考资料

另一个性能问题的详细信息当您在 SQL Server 2012年中大表空间数据类型上建立索引,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

2887888解决︰ 在 SQL Server 2012年实例中大表空间数据类型生成索引时降低在 SQL Server 中的性能

Author: rdorr; jannaw
Writer: v-shysun
技术审阅︰ rdorr; brellwei; ajayj; jannaw; sqlprev
Editor: v-mordew

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×