错误 #: 194032 (内容维护) VSTS: 1484606
症状
当您尝试在 Microsoft SQL Server 2012年或 SQL Server 2014年大表空间数据类型 (通过使用创建索引或 ALTER INDEX) 建立索引时,争夺是CMEMTHREAD等待类型,并将减少 SQL Server 性能上的高。
解决方案
第一次修复该问题的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注意:"修补程序下载可用"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。
详细信息
CMEMTHREAD等待类型指示内部的线程安全内存对象上等待。更高的并行度可能触发导致性能下降的空间活动在等待。
此修复程序通过使用NUMA节点分区分区CMEMTHREAD相关联的"空间内存对象"。这将减少工作人员活动并发调度程序在单个节点上的活动的数目。对于每个节点的调度程序的更高级别的系统,跟踪标志 – T8048 可用于进一步分区允许进行分区的所有内存对象的计划。跟踪标志谨慎使用,因为它引入了少量的内存开销NUMA节点划分内存的所有对象。 注意:当 SqlServerSpatial110.dll 加载到 SQL Server 进程的地址空间,则创建空间内存对象。在大多数情况下,这需要 SQL Server 进程的重新启动计算机来应用跟踪标志效果。 等待所有线程安全内存对象,而不仅仅是空间对象, CMEMTHREAD等待类型就会都增加。下面的XEvent会话定义和使用公共符号可用于标识CMEMTHREAD等待生成特定的代码行︰CREATE EVENT SESSION wait_stacksON SERVER ADD EVENT sqlos.wait_info ( action(package0.callstack) where opcode = 1 -- wait completed and wait_type = 191 -- CMEMTHREAD ) add target package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'), add target package0.ring_buffer (SET max_memory = 4096) With (MAX_DISPATCH_LATENCY = 1 SECONDS) Go alter event session wait_stacks on server state = start go Run the repro select event_session_address, target_name, execution_count, cast (target_data as XML) from sys.dm_xe_session_targets xst inner join sys.dm_xe_sessions xs on (xst.event_session_address = xs.address) where xs.name = 'wait_stacks' go状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。
Author: rdorr; jannaw
Writer: v-shysun 技术审阅︰ rdorr; brellwei; ajayj; jannaw; sqlprev Editor: