有一栏 field1 varchar(32)
如果我只是在这个字段中存储 'ABC',它需要 3 个字节。SQL Server 访问此列并将其缓存在内存中时,需要占用多少内存?3个字节还是32个字节,如何证明你的答案?
提前致谢
SQL Server 不会缓存该列。它将缓存恰好包含该值的整个页面,因此它将始终缓存 8192 字节。页面的位置受行内与行溢出存储以及列是否稀疏等因素的影响。
现在更好的问题是这样的值在页面中占据了多少?答案再次不是直接的,因为该值可以以未压缩、行压缩、页面压缩或列压缩的方式存储。行压缩对 varchar 字段没有影响是真的,但页面压缩有影响。
现在,对于回答类型值在非压缩表中行内占用多少存储空间varchar(32)
的直接方法,最好的资源是Inside the Storage Engine: Anatomy of a record。阅读 Paul Randal 的文章后,您将能够回答问题,并证明答案。
此外,您必须考虑将此列作为键或包含此列的任何二级索引。
归档时间: |
|
查看次数: |
5768 次 |
最近记录: |