【发布时间】:2016-03-16 14:19:35
【问题描述】:
SQL Server 2014 介绍了一个看起来很棒的功能:In-Memory OLTP (In-Memory Optimization)。让我想起了MySQL'sMEMORY Storage Engine,几年前我尝试过,获得了更好的性能。
我知道有人问过already,但我对更有针对性的场景感兴趣:
一些SSRS 报告使用大型存储过程,出于性能原因(对于具有大量连接、分组等的查询来说,执行计划非常丑陋和缓慢),通过使用临时表来拆分逻辑来保存部分结果。
由于临时表被写入磁盘,我预计在处理大量数据(数万甚至数十万行)时会对性能产生影响。
在这种情况下使用In-Memory OLTP tables 有意义吗?我正在考虑以下优点和缺点。
优点:
- 应该明显更快,因为所有数据都存储在内存中
缺点:
- 需要明确的会话分离(表应包含某种会话标识符,以免混合来自各种
SPIDs 的数据) - 需要明确的数据清理以避免内存不足(与退出声明范围后自动删除的临时表相反)
- 需要注意表中存储的数据量
【问题讨论】:
标签: sql-server-2014 temp-tables in-memory in-memory-oltp