我的 rails 应用程序从 Web 收集大量数据,在包含十几个表的规范化数据库上对数十万条传入记录(选择、更新和插入)运行 ETL。加快我的 sqlite 数据库性能的最佳可靠方法是什么?
我已经在我搜索的所有字段上设置了索引,并将主循环包装到一个事务中。
是否有任何其他标准做法,如数据库设置,可以加快 SQLite?
我的 rails 应用程序从 Web 收集大量数据,在包含十几个表的规范化数据库上对数十万条传入记录(选择、更新和插入)运行 ETL。加快我的 sqlite 数据库性能的最佳可靠方法是什么?
我已经在我搜索的所有字段上设置了索引,并将主循环包装到一个事务中。
是否有任何其他标准做法,如数据库设置,可以加快 SQLite?
如果您有大量数据,SQLite 不是一个好的选择。如果可以选择,请切换到 mysql 或 postgres。两者都易于安装,并且性能应该更好。
我不得不不同意其他答案建议您切换到 mysql 或 postgres,而无需更多地了解您的代码运行速度不够快的原因。人们倾向于同意 SQLite 可以在面向性能的系统中处理大量数据。我建议发布一些你经常做的场景的代码,让我们看看我们是否能想出更好的方法来做这些。如果您在 SQLite 和 mysql 中使用相同的有缺陷的方法,我怀疑您会看到更好的收益。
SQLite 能够非常快。如果您发现速度比 MySQL 或 PostGres 等其他数据库系统慢,那么您没有充分利用 SQLite 的潜力。优化速度似乎是 SQLite 的作者和维护者 D. Richard Hipp 的第二要务。首先是数据完整性和可敬性。阅读更多关于您可以在此处进行的一些优化
你也是
在批量事务中插入数据?并且您应该在导入数据时尝试对数据进行排序甚至可以考虑在晚上或活动较少的时期重做索引