Microsoft SQL Server DBMS中可空数据类型的大小是多少?
例如,非可空int应该占用4个字节,可空的列空间将占多少?
子问题:nullable int,char(N),nvarchar(N) - 我假设它们可能以不同方式存储.
我读过的内容:
可空列和不可空列在数据页上占据完全相同的存储空间.每个数据页的一部分是空位映射,它对表中的每一列都有一个位,甚至是非可空的.
一种常见的误解是数据页的空位映射部分仅存储可空列的位.这不是真的.null-bit-map部分包含表中所有列的可空标志. 这是解释这个神话的好参考. 这是另一个.
我想知道为什么SQL Server(以及之前的Sybase)使用这种结构.一种可能性是改变柱的可空性可以是"快速"操作.虽然所有页面上的位都有很大变化,但是通过引入新的NULLable字段没有页面拆分的危险.
另一种可能性是,它将页面上的布局与表元数据分离.虽然页面不知道列名,但它确实知道基于列索引的所有列.
| 归档时间: |
|
| 查看次数: |
3163 次 |
| 最近记录: |