2

在我的一个项目中,日志系统的当前实现使用 mysql 表。发布给客户的应用程序每天都会将一些日志信息写入表中。我们的服务器上有一个脚本可以自动删除所有超过 60 天的日志。问题是主 ID 不断增长,并且在未来的某个时间,它会超出限制。id 当前设置为 int auto_increment。那么这个问题的最佳解决方案是什么。我不是数据库专家,非常感谢您的帮助。我试图在 Stack Overflow 上搜索,但找不到我的案例的答案。

我应该将int更改为bigint吗?如何在不中断数据库正常运行的情况下做到这一点?我想避免任何停机时间。但即使使用 bigint,id 也会有一天达到限制。看来我只是在拖延问题。有没有好的解决方案?我可以配置数据库,以便它可以重新使用脚本删除旧数据后可用的 ID?

4

2 回答 2

1

尽量不要删除表,而是在 60 天后归档内容,即从主表中删除并插入到归档表中。对于第二个问题,如果 PK 的值正在增加,请尝试使用“bigint”类型

于 2012-07-14T17:49:21.113 回答
0

我认为 4294967295(对于 unsigned int)行的日志数据就足够了,除非您的应用程序仍处于必须生成应用程序操作日志的过早部署阶段。否则,请尝试改进您的实用程序脚本,以便它可以重建表并重新启动索引。当然,它会多花几秒钟,但我认为它足够值得。无论如何,最好的(理想的)数据库驱动应用程序会产生较小的数据(包括日志),但仍能以良好的完整性提供完整的数据集。

于 2012-07-14T18:12:55.767 回答