English 中文(简体)
BigInteger 是一个足够大的数据类型来支持事件日志表吗?
原标题:
  • 时间:2008-11-10 10:58:36
  •  标签:

现在我知道bigint是2^64;也就是说,比已知宇宙中的原子还要多。我不应该担心,因为我的单纯人类大脑无法理解那个数值的巨大。

然而,假设我记录系统中每个类别、产品和订单的每一次更改,从启动到永久结束。我应该担心表写入的性能问题,还是应该担心主键值的耗尽?我是否应该将不同优先级的事件记录到不同的事件表中?我是否会在 bigint 耗尽之前用光硬盘上的原子?事件日志表应该在多大后开始归档/清理?

最佳回答

即使您的每个条目只有1个字节,2^64个条目也将占用约18000000 TB的硬盘空间,所以我想您不应该担心这个问题。

问题回答

如果您的应用程序每一百万分之一秒增加一条记录,则在用完所有键之前,它将运行超过五十万年。

在我开始归档/清除事件日志表之前,我应该让它变得多大?

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

然而,如果一些经理坚持档案是必要的,您可以展示存储成本与为(a)考虑、(b)获得第二和第三意见,然后(c)编写归档日志记录的程序所花费的时间成本。

存储成本正在暴跌。您的时间最好用于除了清理日志记录之外的任何事情。

底线是:你有权停止握手,这一切都很好,你没有犯任何根本性的错误。

很少有可能会用完主键值。但是,您可能需要考虑如何访问日志表以检索数据。使用此信息来确定何时应该归档或清理数据。如果经常读取日志数据,请考虑添加索引以提高读取性能,但请记住,需要为每个添加的记录维护索引。

我们处理这种情况的方式是提供日志归档功能,通过按照年份将日志表分开成独立的数据库,从而使我们能够在LogEvent表上重置identity seed。

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





相关问题
热门标签