作者:小色米虫_524 | 2023-08-10 11:14
如果有可能,怎么样?
我想加快sqlite中的读数(而不是写作)
谢谢
1> Samuel Neff..:
是.
SQLite将数据加载到页面内存中.默认页面大小为1024字节.您可以使用此命令更改页面大小.
PRAGMA page_size = bytes;
但是在创建数据库之前必须这样做(或者在3.5.8中,您可以在发出新的页面大小编译指示后运行VACUUM来更改它).
缓存基于页数.默认缓存大小为2000页.您可以使用此命令更改它.
PRAGMA cache_size = Number-of-pages;
因此,要在内存中存储10MB的数据,请将页面大小增加到5120或将缓存大小增加到10000.
关于pragma的更多信息在这里.
@glenn,也许在较旧的版本中它是可能的,但在当前版本中它_has_是2的幂或它不会设置页面大小http://www.sqlite.org/pragma.html#pragma_page_size
你应该*不*改变页面大小,除非你知道你在做什么; 如果您试图影响缓存,那么使用它是错误的,将其设置为5120可能会产生严重的性能影响.此外,对于许多场景,您希望预先缓存所有内容,因为通过正常访问不按顺序读取文件来延迟填充缓存可能非常慢.
@Glenn Maynard,在讨论SQLite中的性能时,通常首先推荐的是调整页面大小.默认值1024用于向后兼容,并且是使用SQLite的许多平台之间的折衷.当然,在内存非常有限的嵌入式操作系统上,您希望页面大小小于主要专用于数据库驱动的应用程序的服务器操作系统.我们在Windows上使用我们的应用程序进行测试表明,我们的最佳页面大小为4096字节.
这是针对I/O性能的,而不是"如何使缓存大小更大".将它设置为像5120这样的非幂二,几乎可以肯定是一个非常糟糕的主意.
2> 小智..:
请注意,从sqlite版本3.12.0开始,页面大小已增加到4096字节
https://www.sqlite.org/pragma.html#pragma_page_size