2010-02-02 47 views
15

如果可能的话,怎么样?可以将sqlite加载10M数据到内存中

我想在sqlite的

感谢

+0

开始我不知道理解这个问题。你想在内存中拥有一个sqlite数据库,或者你想读取10MB的信息到内存中吗?你使用哪种语言绑定? – 2010-02-02 08:56:36

+0

我在pysqlite中有10M数据,我想把它加载到内存中 – zjm1126 2010-02-03 07:22:06

回答

18

是加快读数(未著作)。

SQLite将数据加载到页面的内存中。默认页面大小为1024字节。您可以使用此命令更改页面大小。

PRAGMA page_size = bytes; 

但你必须要做到这一点,你创建数据库(或3.5.8,您可以通过运行发行新的页面大小编译后真空更改)前。

缓存基于页数。默认缓存大小为2000页。您可以使用此命令更改它。

PRAGMA cache_size = Number-of-pages; 

所以存储10MB内存中的数据,无论是增加页面大小为5120或增加高速缓存大小为10000

更多信息的编译指示是在这里。

http://sqlite.org/pragma.html

+6

你应该*不*改变页面大小,除非你知道你在做什么;如果试图影响缓存的话,这是一个错误的做法,将其设置为5120可能会带来可怕的性能影响。此外,对于许多场景,您希望预先缓存所有内容,因为通过正常访问而无序地读取文件可能会非常缓慢,从而懒惰地填充缓存。 – 2010-02-03 06:58:28

+5

@Glenn Maynard,在讨论SQLite性能时首先推荐的第一件事是调整页面大小。 1024的默认值用于向后兼容,并且是使用SQLite的许多平台之间的折衷方案。当然,在内存非常有限的嵌入式操作系统中,您需要的页面大小要低于主要用于数据库驱动的应用程序的服务器操作系统。我们在Windows上使用我们的应用程序进行的测试表明,我们的最佳页面大小为4096字节。 – 2010-02-03 14:39:04

+4

这是为了I/O性能,而不是“如何使缓存大小更大”。将它设置为像5120这样的非二次方功率几乎肯定是一个非常糟糕的主意。 – 2010-02-03 22:12:22

相关问题