【问题标题】:Saving the state of thousands of objects every 10 seconds每 10 秒保存数千个对象的状态
【发布时间】:2014-06-20 10:13:03
【问题描述】:

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

我无法解决这个问题,因为我每 10 秒执行 2000 次插入,这会破坏我的磁盘。但是我相信一定有更好的方法来做到这一点! 我只是想获得一份未使用频道的列表(例如,空了 2 周的频道)以便稍后删除。

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

【问题讨论】:

  • 您使用的是哪个数据库?您真的必须保存所有事件,还是只保存有关哪些频道为空的信息?
  • 我正在使用 SQLite。我只需要知道每个频道最后一次使用的时间(然后过滤几周内未使用的频道)
  • 在我看来,您的数据库只需要 2000 条记录,每个通道一个,保存“最后使用”的时间戳。那么你只需要更新那些自上次更新以来已经使用过的频道的记录。
  • 是否可以仅检测用户何时连接到频道,以某种方式比每十秒检查一次频道以查看是否有人在其中更简洁?是否有引发事件或其他事件?

标签: database language-agnostic disk-io


【解决方案1】:

如果您希望 SQLite 处理这么多记录,您必须在事务中对它们进行批处理。见http://sqlite.org/faq.html#q19

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

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 2021-03-27
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多