我正在处理一组较大的数据(约 30000 条记录),我的 Django 应用程序需要定期检索这些数据。这些数据实际上并不经常更改(可能每月一次左右),并且所做的更改是批量完成的,因此我试图实现的数据库解决方案几乎是只读的。
这个数据集的总大小约为 20mb,我的第一个想法是我可以将其加载到内存中(可能作为对象上的单例)并以这种方式非常快速地访问它,尽管我想知道是否有通过避免磁盘 I/O 来减少获取时间的其他更有效的方法。 memcached 是最好的解决方案吗?或者将其加载到内存 SQLite 数据库中会更好吗?或者在应用程序启动时将其作为内存变量加载?
最佳答案
我认为最简单的解决方案是将所有对象加载到内存中
cached_records = Record.objects.all()
list(cached_records) # by using list() we force Django load all data into memory
然后你就可以在你的应用中自由使用这个cached_records
,你也可以使用filter
等QuerySet方法。但是filter
对缓存的记录将触发数据库查询。
如果您要根据条件查询这些记录,那么使用缓存将是一个好主意。
关于python - 将静态 Django 数据库加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310083/