我有一个Pylons应用程序使用SQLAlchemy和SQLite作为后端。我想知道每次读取SQLite的操作是否总是会导致硬盘读取(与RAM相比速度非常慢)或者已经涉及了一些缓存机制。
答案 0 :(得分:3)
是的,SQLite有自己的内存缓存。例如,检查PRAGMA cache_size
。此外,如果您正在寻找加速,请检查PRAGMA temp_store
。还有用于实现自己的缓存的API。
SQLite数据库只是操作系统的一个文件。什么都没有“自动”完成它。为确保缓存确实发生,有sqlite.h
个定义和运行时编译指示设置。
这取决于很多情况下你会慢下来。
答案 1 :(得分:0)
使用生产数据库(Mysql或postgres)代替sqlite可以获得多少加速?
您是否在生产服务器环境中使用sqlite?你可能不应该:
来自Appropriate Uses for Sqlite:
SQLite通常可以正常工作作为网站的数据库后端。 但是,如果你的网站太忙了,你正在考虑拆分 数据库组件关闭到一台单独的机器上,那么你应该 绝对考虑使用企业级客户端/服务器数据库 引擎而不是SQLite。
SQLite的设计并不好,而且从来没有打算很好地扩展; SQLite交易方便性能;如果性能是一个问题,你应该考虑另一个DBMS