在我的一个项目中,日志系统的当前实现使用了一个mysql表。发布给客户的应用程序每天将一些日志信息写入表中。我们的服务器上有一个脚本可以自动删除超过60天的所有日志。问题是主要ID不断增长,未来一段时间,它将超过限制。 id当前设置为int auto_increment。那么这个问题的最佳解决方案是什么。我不是数据库专家,非常感谢您的帮助。我试图搜索Stack Overflow但找不到我的案例的答案。
我应该将int更改为bigint吗?如何在不中断db的正常操作的情况下执行此操作?我想避免任何停工时间。但即使使用bigint,id也会达到限制一天。看起来我只是在推迟这个问题。有一个很好的解决方案吗?我可以配置数据库,以便它可以重用脚本删除旧数据后可用的ID吗?
答案 0 :(得分:1)
尽量不删除表,但在60天后归档内容,即从主表中删除并插入到存档表中。对于第二个问题,如果PK的值正在增加,请尝试类型'bigint'
答案 1 :(得分:0)
我认为4294967295(对于unsigned int)日志数据行就足够了,除非您的应用程序仍处于过早部署阶段,必须生成应用程序操作的日志。否则,尝试改进实用程序脚本,以便它可以重建表并重新启动索引。当然,它会花费几秒钟,但我认为它足够值得。无论如何,最好的(理想的)数据库驱动的应用程序产生较小的数据(包括日志),但仍然提供完整的数据,以保持良好的完整性。