每 10 秒保存数千个对象的状态

Saving the state of thousands of objects every 10 seconds

提问人:Daniel Sorichetti 提问时间:5/4/2014 更新时间:5/4/2014 访问量:69

问:

我有一个包含大约 2000 个对象的列表(在本例中为 Teamspeak 频道),我想记录(到磁盘)它们是否为空,以确定正在使用哪些对象。

我在解决这个问题时遇到了麻烦,因为我每 2000 秒插入 10 次,这让我的磁盘陷入困境。但是,我相信一定有更好的方法可以做到这一点!我只是想获得一个未使用的频道列表(例如,空了 2 周的频道)以供以后删除。

我应该使用关系数据库吗?有没有更好的方法来满足我想做的事情?

与数据库 语言无关的 磁盘-IO

评论

0赞 Robert Harvey 5/4/2014
您使用的是哪个数据库?您真的必须保存所有事件,还是只保存有关哪些频道为空的信息?
0赞 Daniel Sorichetti 5/4/2014
我正在使用SQLite。我只需要知道每个频道上次使用的时间(然后过滤那些几周未使用的频道)
0赞 eggyal 5/4/2014
在我看来,您的数据库只需要 2000 条记录,每个通道一条,保存“上次使用”的时间戳。然后,您只需要更新自上次更新以来已使用的那些通道的记录。
0赞 anaximander 5/4/2014
是否有可能只检测用户何时连接到频道,这比每十秒检查一次频道以查看是否有人在其中更整洁?有没有被提出的事件,或者其他什么?

答:

2赞 Robert Harvey 5/4/2014 #1

如果你想让SQLite处理那么多记录,你必须在事务中批处理它们。查看 http://sqlite.org/faq.html#q19

但我怀疑你不需要记录那么多数据,如果你想要的只是关于哪些频道是空的。