我正在研究sqlite功能,我发现了默认禁用的SQLite Shared-Cache Mode。
共享缓存是:
打算在嵌入式服务器中使用
因为它在线程或进程之间共享单个数据和模式缓存。 我有兴趣在PHP(和Python)中使用sqlite(带共享缓存),所以我的问题是:
1)PHP脚本中的每个PDO连接都是sqlite DB被认为是单个隔离连接吗?
2)如果是,使用共享缓存模式可以提高高并发场景的性能;要激活共享缓存模式,必须调用此C函数:
int sqlite3_enable_shared_cache(int);
如何通过PDO调用该功能?
似乎几乎不可能,但也许有一个解决方案。
最诚挚的问候, 法比奥布达 Web开发人员/设计师@ netdesign
答案 0 :(得分:6)
您可以执行以下技巧以在PHP代码中启用SQLite共享缓存功能:
define( 'SQLITE3_OPEN_SHAREDCACHE' , 0x00020000 );
$sqlite = new SQLite3( 'sqlite.db3' , SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE | SQLITE3_OPEN_SHAREDCACHE );
它的工作原理虽然有点难看,但对10k用户数据库的性能测试显示出一点(~3%)的性能下降。看起来这不是查询(结果)缓存,而是原始表数据的内存缓存。这就是为什么它应该只对具有高并发级别的真正庞大的数据库有益。
答案 1 :(得分:0)
我搜索了PHP源代码,为您找到答案。 ext/pdo_sqlite/
中的任何文件都没有调用sqlite3_enable_shared_cache
函数,这意味着没有实现。