在过去的几周里,我在 SQL Server 2014 中测试了新的内存中的东西(从未使用过 SQL Server 2012,从 2008R2 直接跳到 2014,所以如果 SQL Server 2012 中也存在这个新功能,我的坏的)。
我很好奇的一件事是查看分配给特定内存优化表的“物理”空间。
sys.allocation_units
似乎不再保存有关这种新型表使用的页面的信息,考虑到该表不再存储在页面中,这是有道理的。所以我发现为此你需要使用sys.dm_db_xtp_table_memory_stats
VIEW (这对我来说又是新的,也许这在 2012 版中出现了)。
正如我上面提到的,这是一个视图,所以我想看看保存这些信息的底层表是什么,但是当我“解开”视图背后的代码时sys.dm_db_xtp_table_memory_stats
,我得到了:
CREATE VIEW sys.dm_db_xtp_table_memory_stats
AS
SELECT
object_id,
memory_allocated_for_table_kb,
memory_used_by_table_kb,
memory_allocated_for_indexes_kb,
memory_used_by_indexes_kb
FROM
sys.dm_db_xtp_table_memory_stats$
WHERE database_id = db_id()
现在,那张桌子旁边的美元符号到底是什么鬼(顺便说一句,这不是一张桌子!)。我在谷歌上搜索了一下,并没有找到任何结果。那是引擎表指针吗?有什么线索吗?