SQLite读取是否总是击中磁盘?

ixi*_*ixi 5 python sqlite sqlalchemy

我有一个Pylons应用程序使用SQLAlchemy和SQLite作为后端.我想知道每次读取SQLite的操作是否总是会导致硬盘读取(与RAM相比速度非常慢)或者已经涉及了一些缓存机制.

  • SQLite是否在RAM中维护数据库的子集以便更快地访问?
  • 操作系统(Linux)可以自动执行此操作吗?
  • 使用生产数据库(MySQL或PostgreSQL)而不是SQLite,我可以期望多少加速?

ham*_*ene 3

  1. 是的,SQLite 有自己的内存缓存。PRAGMA cache_size例如检查一下。另外,如果您正在寻求加速,请检查PRAGMA temp_store. 还有用于实现您自己的缓存的 API。

  2. SQLite 数据库只是操作系统的一个文件。没有任何事情是“自动”完成的。为了确保缓存确实发生,有sqlite.h定义和运行时编译指示设置。

  3. 这取决于情况,在很多情况下你的速度会变慢。