sqlserver中大字段是如何存储的,比如varchar(max),text,image
B树结构了,堆(HEAP)结构了,都用8kb的页(page)为单位来描述
对于大字段,有如下疑问
1,大字段是如何存储的,比如varchar(max),text,image之类的,这种数据类型是如何存储的?
2,另外一个问题,比如varchar(max),算是大字段,当一个页可以容纳下的时候,比如存储了100个字符,与一个页容纳不下时,比如存储了100000个字符,存储结构是不是一样的?
3,LOB和行溢出的存储结构怎么理解?
谢谢!
. 英文要不要?
http://sqlserverzest.com/2013/10/14/sql-server-understanding-allocation-units-in-row-data-lob-data-row-overflow-data/
http://sqlmag.com/sql-server-2008/sql-server-2008-lob-data-types
http://www.sqlskills.com/blogs/kimberly/understanding-lob-data-20082008r2-2012/
[解决办法]
varchar(max):
1)当存储字符长度<=8000时,存储机制跟常规varchar一样,实际占用空间=字符长度+2(结束标识)。
2)当存储字符长度>8000时,存储机制跟text一样。varchar(max)支持的最大长度是系统支持的最大长度,如在32位SQL Server上其最大长度为2G字节。