2011-12-18 46 views
2

我是一个Python应用程序的用户,它的表索引很差,并且想知道是否可以通过在应用程序启动时将SQLite数据库转换为内存数据库来提高性能。我的想法是,它可以最大限度地减少全表扫描的问题,特别是因为SQLite可能会创建自动索引,因为文档说这是默认启用的。如何使用SQLAlchemy ORM(这是应用程序使用的)来完成这项工作?是否可以使用SQLAlchemy将SQLite数据库读入内存?

+0

你说你是一个非程序员,但对我来说这听起来很像编程繁重的工作。但不是改变SQLite以在内存中工作,而是简单地将索引添加到现有的SQLite数据库中。这可能会得到您的要求内的性能,而不会触及应用程序代码。搜索“SQLite数据库编辑器”。 – wberry 2011-12-19 16:02:47

回答

0

每当你在Python中设置一个变量,你正在实例化一个对象。这意味着你正在为它分配内存。

当您查询sqlite时,您只是将信息从磁盘读取到内存中。

sqlalchemy只是一个抽象。您可以通过查询数据库并将返回的数据设置为变量来以相同的方式将数据从磁盘读取到内存中。

+1

我认为OP希望通过在内存中缓存数据库来避免磁盘访问成本。 – 2011-12-18 03:15:00

+0

正确,我想尽量减少磁盘访问。 – user1104069 2011-12-18 03:23:10

+0

那么这将涉及到查询所有数据的数据库,建立与内存中支持的数据库会话,创建表和插入查询的数据。 sqlalchemy教程包含完成此操作所需的全部信息。 – 2011-12-18 03:23:24

1

在程序开始时,将数据库文件移动到虚拟硬盘上,指向SQLAlchemy并执行处理,然后将SQLite文件移回非易失性存储。

这不是一个好的解决方案,但它可以帮助您确定将数据库缓存在内存中是否值得。

相关问题