我是一个Python应用程序的用户,它的表索引很差,并且想知道是否可以通过在应用程序启动时将SQLite数据库转换为内存数据库来提高性能。我的想法是,它可以最大限度地减少全表扫描的问题,特别是因为SQLite可能会创建自动索引,因为文档说这是默认启用的。如何使用SQLAlchemy ORM(这是应用程序使用的)来完成这项工作?是否可以使用SQLAlchemy将SQLite数据库读入内存?
回答
每当你在Python中设置一个变量,你正在实例化一个对象。这意味着你正在为它分配内存。
当您查询sqlite时,您只是将信息从磁盘读取到内存中。
sqlalchemy只是一个抽象。您可以通过查询数据库并将返回的数据设置为变量来以相同的方式将数据从磁盘读取到内存中。
我认为OP希望通过在内存中缓存数据库来避免磁盘访问成本。 – 2011-12-18 03:15:00
正确,我想尽量减少磁盘访问。 – user1104069 2011-12-18 03:23:10
那么这将涉及到查询所有数据的数据库,建立与内存中支持的数据库会话,创建表和插入查询的数据。 sqlalchemy教程包含完成此操作所需的全部信息。 – 2011-12-18 03:23:24
在程序开始时,将数据库文件移动到虚拟硬盘上,指向SQLAlchemy并执行处理,然后将SQLite文件移回非易失性存储。
这不是一个好的解决方案,但它可以帮助您确定将数据库缓存在内存中是否值得。
- 1. SQLite数据库是否计入应用的内存限制?
- 2. 是否可以使用内存缓冲区(或PE资源)来备份只读SQLite数据库?
- 3. 是否可以使用Javascript来加密/解密SQLite数据库?
- 4. 我可以测试SQLite数据库中是否存在表?
- 5. 是否可以指示libmysqld(嵌入式MySql数据库引擎)与内存数据库一起使用?
- 6. 使用ADM-ZIP(Node.js)将SQLite存储到内存数据库中
- 7. 是否可以将SharePoint用户存储在MySql数据库中?
- 8. 检查SQLite数据库是否存在
- 9. 是否可以通过sqlalchemy查询数据库?
- 10. 使用内存sqlite数据库时是否存在线程锁QSqlQuery
- 11. 是否有可能使用SQLite数据库而不使用sqlite函数?
- 12. 确定SQLite 3数据库是否为只读 - 不使用sqlite3_db_readonly()
- 13. 是否可以在Android SQLite数据库上禁用WAL?
- 14. 使用sqlite,sqlalchemy,python在数据库中重复插入
- 15. 是否可以在只读模式下连接到内存中的sqlite数据库?
- 16. ASP.Net可以读取SQLite数据库,但不能插入win 7
- 17. 无法连接到内存SQLite数据库在Windows上使用Python 2.7.3与SQLAlchemy
- 18. 是否可以获取hsqldb内存数据库的大小?
- 19. 是否有可能使用SQLiteConnection库检查SQLite数据库是否被锁定
- 20. Spark在写入时是否可以使用SQL数据库?
- 21. NHibernate:修改XML/XDoc映射以使用SQLite内存数据库
- 22. 是否可以通过内存从Excel中导入数据?
- 23. Sqlalchemy;将主键设置为预先存在的数据库表(不使用sqlite)
- 24. 使用SQLAlchemy检查数据是否存在于MYSQL数据库中
- 25. 将sqlite数据库从文件复制到:内存使用C#
- 26. 是否使用Sqlite数据库或Json格式进行数据库插入
- 27. 是否可以将整体答案存储在数据库中?
- 28. Python将循环插入SQLite数据库中的变量使用SQLAlchemy
- 29. 是否可以使用Extjs4将数据写入JSON?
- 30. 是否可以使用JavaScript将数据写入Google表单?
你说你是一个非程序员,但对我来说这听起来很像编程繁重的工作。但不是改变SQLite以在内存中工作,而是简单地将索引添加到现有的SQLite数据库中。这可能会得到您的要求内的性能,而不会触及应用程序代码。搜索“SQLite数据库编辑器”。 – wberry 2011-12-19 16:02:47