数据库可变长度文本字段应该是2的幂吗?

6 database database-design

我的一位朋友声称,在典型的数据库中,使用(例如)nvarchar[256]将比页面分配的粒度更好nvarchar[200]或更好地提供性能nvarchar[250].

这有什么道理吗?

谢谢!

Sea*_*lly 16

这不是真的.表以8k页的形式分配在磁盘上.从磁盘读取表时,将在一个IO操作中读取整个页面并将其存储在内存中.因此,列的长度根本不会影响内存对齐.实际上,对于非可变长度数据类型,更短的肯定更好:nchar(200)列将允许每页比nchar(256)列更多的行.这允许每个物理IO读取更多行,这可能对数据库性能产生巨大影响.


Mus*_*sis 5

不,没有.


Rob*_*ker 5

如果由于分配开销可能更糟糕的话.当您分配nvarchar(256)时,数据库可能包含两个字节的长度,因此存储要求实际上可能是258.

这里有很多层次的抽象,你不会看到任何好处,试图在顶部优化只在最底层的事情,你可能会让事情变得更糟!