在不同平台上使用sqlite和文件锁定存在已知问题吗?
我正在使用sqlite做一个专有文件的索引,并且数据库将被多个线程(使用不同的sqlite句柄)读取和写入。
我知道,sqlite锁定文件,以便为读者/作者提供并发性,并取决于操作系统文件api的锁定。
这在Windows和Linux上都很好,但在solaris和hpux上,我对于咨询锁定如何在那里工作不太自信。
有没有人知道sqlite在这些平台上的并发性如何?
根据我的经验(虽然基于有些过时的SQLite版本,即3.0.x - 3.2.x),当您遇到某种争用时,您不希望依赖SQLite的默认锁定实现(即使它只是多个线程处理)。
主要问题是SQLite只是睡一小会儿,然后再次尝试,如果文件已被锁定(直到忙等待超时到期) - 这可能会导致应用程序中的“数据库锁定”错误。 我已经实现的解决方法是除了SQLite自己的锁之外,还使用我自己的锁(在多线程进程中使用互斥锁)。
链接地址: http://www.djcxy.com/p/3329.html上一篇: Are there known issues with using sqlite and file locking on different platforms?
下一篇: What are the performance characteristics of sqlite with very large database files?