我有一个小的(10MB),只读,sqlite3数据库,我在生产中使用。Django - 在内存中的sqlite在生产
我想加快我的网站,所以我试图在每个Django启动时将整个数据库从磁盘加载到内存中。
这样的回答解释了如何做到这一点在瓶: https://stackoverflow.com/a/10856450/3327587
是否有Django的一个类似的解决方案?
我有一个小的(10MB),只读,sqlite3数据库,我在生产中使用。Django - 在内存中的sqlite在生产
我想加快我的网站,所以我试图在每个Django启动时将整个数据库从磁盘加载到内存中。
这样的回答解释了如何做到这一点在瓶: https://stackoverflow.com/a/10856450/3327587
是否有Django的一个类似的解决方案?
配置内存数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}
,把你挂的启动脚本的代码(请参考Execute code when Django starts ONCE only?)。
但Django会在内存中创建一个新的数据库,我如何告诉Django使用现有的内存数据库我装了?我需要将django指向连接或StringIO对象或其他东西。 –
@DanBolofe无法将字节数组加载为数据库; SQLite根本不支持这样做。 –
如果你把所有东西都转储为sql语句然后执行它们,你可以这样做 - 参见:http://stackoverflow.com/a/10856450/3327587 –
如果您想使用Django的ORM,可能不会,因为这需要事先生成架构。对于小型数据库,大部分数据都应该被缓存,所以明确地将其加载到RAM中不太可能有所帮助。 –
“预先生成模式”是什么意思?这是真的,它的缓存,但我认为默认的缓存大小只有2MB,并且数据库可能会变大到50MB,所以我仍然希望明确地将其加载到内存 –
我的意思是“CREATE TABLE”语句。 Django在启动时不会运行这些程序;它需要先运行'manage.py setup'或'manage.py migrate'。缓存大小可通过['cache_size' pragma](http://sqlite.org/pragma.html#pragma_cache_size)调整(您可能需要使用原始SQL语句进行更改)。 –