在SQL Server 2012中,对存在ColumnStore Index的Table进行查询,出现WaitType:HTMEMO 和 HTBUILD

DW中有两个表,LittleTable和BigTable,BigTable上创建了Nonclustered ColumnStore Index,对着两个表进行查询,如下面的Scirpt。在查询时,出现WaitType:HTMEMO 和 HTBUILD,查询速度极其慢,十几个小时都不能出结果。

select a few columns,,,
from dbo.LittleTable lt with(nolock)
inner join dbo.BitTable bt with(nolock)
    on lt.Int_Col1=bt.Int_col1 or lt.Int_Col2=bt.Int_Col4

我修改了查询条件,将 or lt.Int_Col2=bt.Int_Col4 条件删除,再次执行,查询结果秒出。

上网Google了下这两个WaitType

HTMEMO (HT = Hash Table, MEMO = memory)

HTBUILD (HT = Hash Table, BUILD= build)

This wait type (and the other HT* waits) is when a thread is waiting for access to the shared hash table used during batch-mode processing. SQL Server 2012 used to use a hash table per thread and SQL Server 2014 now uses a shared hash table. This change was made to reduce the amount of memory required for the hash table, but comes at the expense of these waits when synchronizing access to the hash table. Typically these waits occur when queries involve columnstore indexes, but they can also occur without columnstore indexes being involved if a hash operator runs in batch mode.

摘自《What’s that HTDELETE wait type?

It now uses one shared hash table instead of per-thread copy. This provides the benefit of significantly lowering the amount of memory required to persist the hash table but, as you can imagine, the multiple threads depending on that single copy of the hash table must synchronize with each other before, for example, deallocating the hash table. To do so, those threads wait on the HTDELETE (Hash Table DELETE) wait type.

时间: 2024-10-10 17:09:44

在SQL Server 2012中,对存在ColumnStore Index的Table进行查询,出现WaitType:HTMEMO 和 HTBUILD的相关文章

SQL Server 2012中快速插入批量数据的示例及疑惑

SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以供有兴趣的同学参考. 附:我的测试环境为:SQL Server 2012,命名实例 Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86) Feb 10 2012 19:13:17 Copyright (c) Microsoft Corporatio

在SQL Server 2012中实现CDC for Oracle

在上篇在SSIS 2012中使用CDC(数据变更捕获)中,介绍了怎样在SSIS 2012中使用CDC,本文在此基础上介绍.怎样通过Attunity提供的Change Data Capture Designer for Oracle实现对Oracle数据表的变更捕获. 相同须要做一些准备工作: 1.配置Oracle数据库为归档模式.并获取浏览日志的指定权限. /* -- ============================================= -- 改动Oracle属性 ---G

在SQL Server 2012中新建用户

一.问题描述 在最开始装SQL Server 2012时我选择的是Windows身份认证方式,现在想添加一个用户采用SQL Server身份验证. 二.具体思路 1.新建用户 2.将新建的用户添加到相应的数据库用户列表中 3.配置用户权限 4.更改服务器身份验证方式 三.解决过程 1.单击鼠标右键,选择新建登录名 2.将新建的用户添加到相应的数据库用户列表中 2.1修改用户名.密码.认证方式 2.1修改用户映射 2.3修改状态 3.配置用户权限 4.更改服务器身份验证方式

SQL Server 2012中的AlwaysOn尝试

简介 SQL Server2012中新增的AlwaysOn是一个新增高可用性解决方案.在AlwaysOn之前,SQL Server已经有的高可用性和数据恢复方案,比如数据库镜像,日志传送和故障转移集群.都有其自身的局限性.而AlwaysOn作为微软新推出的解决方案,提取了数据库镜像和故障转移集群的优点.本文旨在通过实现一个AlwaysOn的实例来展现AlwaysOn. 配置AlwaysOn 虽然AlwaysOn相比较之前版本的故障转移集群而言,步骤已经简化了许多.但配置AlwaysOn依然是一件

SQL Server 2012 Managed Service Account

原创地址:http://www.cnblogs.com/jfzhu/p/4007472.html 转载请注明出处 (一)Windows服务使用的登陆帐号 Windows服务只有登录到某一帐户的情况下才能访问操作系统中的资源和对象.服务一般不要更改默认的登录帐户,否则可能导致服务失败.如果选定帐户没有足够的权限,Microsoft 管理控制台(MMC)的服务管理单元将自动为该帐户授予登录所管理计算机中服务的用户权限.Windows Server 的服务可以用域帐户或者三个内置的本地帐户作为各系统服

SQL Server 2012笔记分享-7:高可用性功能的增强

(一)数据库镜像 1.支持压缩传输 2.支持自动页修复(msdb..suspect_pages) (二)数据库群集     1.支持多子网 SQL Server 多子网故障转移群集是一种配置,其中每个故障转移群集节点都连接到其他子网或其他子网组.这些子网可以处于同一位置中,也可以位于地理上分散的站点. 跨地理上分散的站点进行群集有时称为拉伸群集. 因为没有所有节点都可以访问的共享存储,所以在多个子网上的数据存储之间应该复制数据. 对于数据复制,有多个可用数据的副本. 因此,多子网故障转移群集除了

SQL Server 2012笔记分享-9:理解列存储索引

优点和使用场景 SQL Server 内存中列存储索引通过使用基于列的数据存储和基于列的查询处理来存储和管理数据. 列存储索引适合于主要执行大容量加载和只读查询的数据仓库工作负荷. 与传统面向行的存储方式相比,使用列存储索引存档可最多提高 10 倍查询性能,与使用非压缩数据大小相比,可提供多达 7 倍数据压缩率. SQL 2012和SQL 2014列存储索引的比较 在SQL server 2012中,一旦启用了列存储索引,将不能够对已启用列存储索引的数据存储执行变更写入操作,也就是说列存储索引适

安装 SQL Server 2012 的硬件和软件要求(官方全面)

以下各节列出了安装和运行 SQL Server 2012 的最低硬件和软件要求. Hardware and Software Requirements (PowerPivot for SharePoint and Reporting Services in SharePoint Mode).' data-guid="ac62f277a77cf0fe4624123fb93d4313">有关 SharePoint 集成模式下 Analysis Services 的要求的详细信息,请参

SQL Server 2012不支持从SQL Server 2000的备份进行还原

错误: dbbackup failed: Unable to restore database 'ppt'Not valid backupThe database was backed up on a server running version 8.00.2039. That version is incompatible with this server, which is running version 11.00.3000. Either restore the database on