问题描述
|
假设我有一个巨大的SQLite文件(例如500 [MB])。 10个不同的“ 0”实例可以同时访问此文件并更新它的不同记录吗?注意,这里的重点是不同的记录。
例如,假设SQLite文件具有“ѭ1”行:
实例1将处理(并更新)行0-100000
实例2将处理(并更新)行100001-200000
.........................
实例10将处理(并更新)行900001-1000000
这意味着,每个“ 0”实例将仅更新文件的唯一子集。请问这项工作有效,还是我会遇到严重的诚信问题?
解决方法
更新,感谢AndréCaron。
您可以这样做,但是只有读取操作支持SQLite中的并发性,因为整个数据库都锁定在任何写入操作上。在这种情况下,SQLite引擎将返回SQLITE_BUSY状态(如果超过了默认的访问超时时间)。还应考虑到,这在很大程度上取决于为给定的OS和文件系统实现良好的文件锁定。通常,我不建议使用建议的解决方案,特别是考虑到DB文件很大,但是您可以尝试。
最好使用基于服务器进程的数据库(MySQL,PostgreSQL等)来实现所需的应用程序行为。
, 有些。一次只能有一个实例可以写入,这意味着并发写入将被阻止(请参阅SQLite FAQ)。您不会遇到完整性问题,但是我不确定您会真正从并发中受益,尽管并发取决于并发与否。