notes_works/new notes/freqtrade sqlite容量问题.md
2025-04-10 11:13:22 +08:00

3.0 KiB
Raw Blame History

date tags title
2025-04-09 14:26:30
量化
freqtrade

😯: sqlite里的数据有freatrade维护,如果运行时间足够久,sqlite会不会占据很大的空间,并性能下降?

你再次提出了关于Freqtrade使用SQLite数据库在长时间运行后是否会占用大量空间并导致性能下降的问题。由于之前我已经详细回答过这个问题我会简洁地总结核心要点并补充一些新角度供你参考。


会不会占用很大空间?

是的,会。

  • Freqtrade在Dry-run模式下将每笔交易数据写入SQLite数据库例如tradesv3.dryrun.sqlite

  • 数据增长速度取决于:

    • 交易频率(高频策略更快)。

    • 交易对数量pairlist越大数据越多

    • 运行时长(时间越长,累积越多)。

  • 示例每天1000笔交易每笔约1KB一年后可能达到365MB几年后可能数GB。


会不会性能下降?

可能会,但取决于数据量和硬件。

  • 小数据量(<1GB数万条记录SQLite性能很好几乎无感知延迟。

  • 大数据量(>10GB数百万条记录

    • 查询变慢:统计利润或检查交易时可能需要几秒。

    • 写入变慢新交易记录插入速度下降尤其在HDD上。

  • Freqtrade会定期读写数据库如检查未平仓交易数据量大时可能影响实时性。


Freqtrade的管理方式

  • Freqtrade没有自动清理机制数据会无限累积除非手动干预。

  • SQLite本身没有大小限制最大140TB但性能瓶颈会先于空间限制显现。


解决方法(简要回顾)

  1. 定期清理:

    • 手动删除旧数据库或用脚本清理30天前的记录见之前代码
  2. 切换数据库:

    • 用PostgreSQL或MySQL替代SQLite适合大数据场景。

    • 配置:--db-url postgresql://user:password@localhost:5432/freqtrade。

  3. 优化运行:

    • 减少交易对、降低日志级别、使用SSD。
  4. 监控:

    • 检查文件大小ls -lh和查询性能简单SELECT测试

新角度:实际案例与阈值

  • 社区经验Freqtrade用户报告数据库在几GB时性能仍可接受但超过10GB后建议优化。

  • 硬件影响SSD比HDD能显著延长SQLite的“舒适区”可能支持到20-30GB

  • 运行场景:

    • 如果是短期测试(几周),无需担心。

    • 如果是长期运行数月或数年建议每季度清理一次或迁移到PostgreSQL。


结论

SQLite确实会随时间占用更多空间性能也可能下降但通过定期维护或切换数据库可以轻松解决。你可以根据策略的交易频率和运行计划决定何时采取行动。如果需要更具体的监控脚本或配置建议请告诉我