问题标签 [memory-optimized-tables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
848 浏览

sql-server - 在 SQL Server 2014 中创建内存优化表时无法调用 C 编译器

我正在尝试使用 SQL Server 2014 创建我的第一个内存优化表。我首先创建了必要的文件组和文件,没有问题。但是当我尝试使用创建一个简单的表时

我得到错误:

消息 41312,级别 16,状态 4,行 0 无法调用 C 编译器。获取上一个错误 = 1392。

我猜想调用编译器的 SQL Server 帐户无权访问编译器所在的目录,但我无法将其放在上面。

0 投票
0 回答
303 浏览

triggers - 在内存优化表 SqlServer 上更新错误之后

使用 EF 6.1.3、SqlServer 2016。我最近将数据库中的某些表修改为内存优化表。一切正常,但是,当我在非内存优化表上添加更新后触发器时,我收到以下错误。

SQL Server 断言:文件:<"d:\b\s1\sources\sql\ntdbms\hekaton\engine\core\tx.cpp">,行=7434 断言失败 = '!(tx->ErrorObject != nullptr) || (err == nullptr || tx->TempTableTx)'。此错误可能与时间有关。如果重新运行语句后错误仍然存​​在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重新启动服务器以确保内存中的数据结构没有损坏。

注意:表上有一个用于行级安全性的谓词,它确实使用内存优化表。

有没有其他人遇到过这个/找到了解决方案?

谢谢!

0 投票
2 回答
574 浏览

sql-server - 内存优化表 - 将数据部分加载到内存中

SQL Server 中的内存优化表是否可以将其部分数据存储在内存中,而将其余数据存储在磁盘中?

我需要将最近 3 个月的数据加载到内存中,其余部分实际上并不需要在内存中,因为它不会被查询。

有没有办法用内存优化表来做到这一点?如果没有,有没有其他方法可以做到这一点?

0 投票
1 回答
1873 浏览

sql - 选择到内存优化表

我有一个存储过程,它将一些动态 sql 转换为临时表或依赖于数据库设置的视图。这用于根据数据大小在不同客户端之间“调整”数据库功能,即临时表创建时间较长但设置时间较长,视图创建速度快但读取时间稍长。

我正在考虑将其扩展为包含内存优化表的选项,但如果不先完全声明它,就看不到如何使用内存优化表。

我目前的代码格式如下:

如您所见,我没有声明表格,只是使用 select into。有什么办法可以选择内存优化表?我可以用:

这为我传入的 TSQL 提供了一个列定义。然后使用此信息预先构建表并插入其中,但如果可能的话,我希望有一个更简洁的方法。

有没有人有任何解决方案?搜索只是让我了解如何将数据添加到 MOT 而不是 MOT 创建作为选择的一部分。

我知道这可能是不可能的,并且我确实有描述的工作,我只是觉得我可能在这里错过了更好的选择。

目前使用多台服务器,MOT功能只在SQL2016上实现。

提前谢谢了。

0 投票
1 回答
983 浏览

sql-server - SQL Server Hekaton 回收已删除的内存优化表使用的内存

我在用着

Microsoft SQL Server Enterprise:基于内核的许可(64 位)版本 12.0.4100.1

我有一个代码,它创建了许多非持久内存优化表,将它们用于某些事情,并在不再需要它们时删除它们。

但是,似乎删除的表仍在消耗 RAM,因为如果我运行

我得到以下信息:

请注意“used_memory_mb”列的高度。在我运行此程序时,服务器中没有内存优化表,所以我认为它必须是来自已删除内存优化表的数据,但仍以某种方式占用 RAM。

同样,当我跑步时

我得到以下输出:

看看 DB_ID_32 是如何占用相同的 ~240gb 内存的?

我需要一些方法来清除它。当我运行多个代码实例时,我收到错误“资源池 'InMemoryObjects' 中的系统内存不足,无法运行此查询”。所以我认为这个内存实际上必须被捆绑起来,并且当它充满时不会释放自己。资源池“InMemoryObjects”仅针对这一代码创建,除了该代码创建(并随后丢弃)的对象之外,整个服务器中没有其他内存优化对象。它创建的内存优化表都相当小(每张几 GB)。

我知道垃圾收集器应该每分钟运行一次,但是自从数据库中存在任何内存优化表以来已经过去了一天,并且使用的内存根本没有减少。我尝试过强制垃圾收集、检查点、重置统计信息等,但无法取回这些内存。

我发现唯一可行的方法是将整个数据库脱机并重新联机。但是我真的不能每次运行代码时都这样做,所以我需要一个更好的解决方案。

任何想法将不胜感激。谢谢!

0 投票
1 回答
1056 浏览

sql-server - 为什么对内存优化的非持久表的批量插入与持久表的速度相同?

当对持久和非持久内存优化表运行大批量插入时,两者的速度相同。批量插入到非持久内存优化表的速度不应该比持久内存优化表快吗?如果是这样,我在这里做错了什么?

我的测试如下,持续大约需要 30 秒。这是在 SQL Server 2016 SP1 上。批量插入是来自我生成的 csv 文件的 1000 万行。

SQL

用户巨大的.csv

0 投票
2 回答
215 浏览

sql - 对此的最佳 Hive SQL 查询

我有 2 张这样的桌子。我正在运行配置单元查询,并且 Windows 功能在配置单元中似乎非常有限。

表部

表时间(使用重负载查询构建,因此如果我需要加入另一个新创建的表时间,这将是一个非常缓慢的过程。)

我需要检索这样的东西:

如何得到最优化的答案?

0 投票
2 回答
108 浏览

sql-server - 流分析是否支持输出到 SQL Server 内存优化表?

在 Zoiner Tejada 所著的“掌握 Azure 分析:云端架构”一书中,我发现有一段说明内存优化表尚不支持作为流分析的输出。

书源链接

由于书籍在赶上那些动态云产品方面并不是很好,我的问题是:这个限制仍然适用吗?

0 投票
1 回答
479 浏览

sql-server - 对内存表的查询比基于磁盘的查询慢

我正在使用一个已经构建的表,我必须迁移到一个内存优化的表。以下是基于磁盘的克隆。两者具有相同的结构,只是基于磁盘的表没有主键,即使该OID字段不应重复。

由于每个内存优化表都必须至少有一个索引,并且列是其他表的外键,因此我已经使这些列的哈希索引计算BUCKET_COUNT了 web 上指示的值:

然而,诸如带/出group by的简单选择之类的查询比针对原始表执行的查询要慢。我也尝试过使用非聚集索引并增加存储桶数,但还是一样。

我怎样才能加快查询速度?

0 投票
1 回答
594 浏览

sql-server - 从内存优化表插入到物理表

想象一下 SQL Server 2016 中的这种情况:我们必须对表 A 和 B

  • A是内存优化表
  • B是普通表

我们加入 A 和 B,什么都没有发生,并且在最短的时间内返回了1000行。但是当我们要将这个结果集插入另一个表(内存优化表或普通表甚至临时表)时,插入需要1020秒。

有任何想法吗?

更新:添加了正常场景和内存优化表的执行计划 带内存优化表 带普通表