我的一位朋友声称,在典型的数据库中,使用(例如)nvarchar[256]
将比页面分配的粒度更好nvarchar[200]
或更好地提供性能nvarchar[250]
.
这有什么道理吗?
谢谢!
这不是真的.表以8k页的形式分配在磁盘上.从磁盘读取表时,将在一个IO操作中读取整个页面并将其存储在内存中.因此,列的长度根本不会影响内存对齐.实际上,对于非可变长度数据类型,更短的肯定更好:nchar(200)列将允许每页比nchar(256)列更多的行.这允许每个物理IO读取更多行,这可能对数据库性能产生巨大影响.
不,没有.
如果由于分配开销可能更糟糕的话.当您分配nvarchar(256)时,数据库可能包含两个字节的长度,因此存储要求实际上可能是258.
这里有很多层次的抽象,你不会看到任何好处,试图在顶部优化只在最底层的事情,你可能会让事情变得更糟!