现在我知道bigint是2 ^ 64;也就是说,原子比已知宇宙中的原子多。我不应该担心,因为我的人脑只是无法绕过那个数字的巨大。

但是,假设我记录了从发布到结束时系统中每个类别,产品和订单的每个更改。在担心主键值用完之前,我是否应该关注表写入的性能?我应该将不同优先级的事件记录到不同的事件表中吗?在用完bigint之前,我是否会耗尽硬盘上的原子?在开始存档/清除之前,我应该让事件日志表有多大?

有帮助吗?

解决方案

即使你的每个条目只有1个字节,2 ^ 64个条目在你的硬盘上也会占用大约18000000 TB,所以我猜你不应该担心这个。

其他提示

如果您的应用程序每百万分之一秒向表中添加一条记录,那么它将在用完密钥之前运行超过五十万年。

“在开始存档/清除之前,我应该让事件日志表有多大?”

永远不要清除事件日志 - 信息具有重要价值。

但是,当某位经理坚持要求存档时,您可以显示存储成本与您花时间的成本(a)考虑它,(b)获得第二和第三意见,然后(c写一个程序来存档日志记录。

存储成本直线下降。除了清除日志记录之外,您的时间最好花在任何事情上。

结论:你有权停止绞伤你的手。都很好。你没有犯一个根本性的错误。

您极不可能用完主键值。但是,您可能需要考虑如何访问日志表以检索数据。用于通知何时应归档或清理数据。如果经常读取日志数据,请考虑添加索引以提高读取性能,但请记住,需要为每个添加的记录维护索引。

我们处理这个问题的方法是提供日志归档功能,按日将日志表分成不同的数据库,允许我们在LogEvent表上重置身份种子。

我们也有不同的日志表,但只有两个主要的日志表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top