SQL Server 2014
介绍了它看起来很棒的功能:In-Memory OLTP (In-Memory Optimization)。这让我想起MySQL's
MEMORY Storage Engine,这是我几年前尝试过的,并且获得了更好的表现。
我知道已经问过already,但我对更具针对性的情况感兴趣:
有几个SSRS
报告使用大型存储过程,出于性能原因(对于具有大量连接,分组等的查询的执行计划非常难看和缓慢),通过使用临时表来保存部分结果来拆分逻辑。
由于临时表被写入磁盘,因此在处理大量数据(数十甚至数十万行)时,我预计会对性能产生影响。
在这种情况下使用In-Memory OLTP tables
是否有意义?我正在考虑以下优点和缺点。
优点:
缺点:
SPID
的数据)答案 0 :(得分:2)
你做对了。
但请注意,像任何其他表一样的临时表是懒惰写入的(甚至比正常情况下更懒惰)。写入磁盘通常不在关键路径上,因为它是异步发生的。除了非常大的临时表,耗尽SQL Server将脏缓冲区保留在内存中的能力。
此外,如果快速释放临时表,则根本不会有任何页面写入。
所以你在那里列出的“亲”通常不会产生(完全)效果。
即使在互操作模式下,内存表往往使用更少的CPU。所以“亲”总是至少有点真实。
您可以考虑使用仅架构的Hekaton表。这肯定不会导致任何数据写入。