这只是我创建的网站和其他大型网站的考虑因素。
我正在使用Identity Column存储我的一些表的ID,并且我的Id用Int32
修饰的类来保存从数据库中检索的ID的值。
我担心的是,随着网站变得越来越大,一些指数增长的表格QuestionComments
将来可能超过Int32
限制。所以我将课程改为使用long
。
public class Question
{
public long QuestionID { get; set; }
...
}
//将数据库值转换为.Net类型
Question q = new Question();
q.QuestionID = Convert.ToInt32(myDataRow["QuestionID"]);
我的假设有多正确?使用UniqueIdentifier会更好吗?还有其他方法可以解决这个问题吗?
答案 0 :(得分:4)
您能想象为任何一个实体存储数十亿条记录吗?如果是这样,您可以切换到BigInt
,也称为Int64
。当然,一旦您开始看到数百万条记录,您就需要开始考虑数据分区和归档,以避免严重的性能问题。如果您有基础架构团队,您可能希望让他们知道您预计会有大量使用,并且需要一个严格的维护计划。如果您是基础设施团队,那么您最好打书!
答案 1 :(得分:2)
如果你真的认为你的评论超过20亿是合理的,那么在SQL Server中使用BIGINT
(.Net中为Int64
)。对于INT
,这需要8个字节的存储而不是4个字节,但是如果使用数据压缩,则可以将此值偏移为前2个十亿个值。