6

SQLite は同時アクセスを管理できますか? C/C++ で SQLite を使用していますか? それがサポートされていない場合。SQLite で同時アクセスをサポートするための提案はありますか?

4

1 に答える 1

9

はい、ドキュメントに記載されているとおりです。

SQLite バージョン 3.0.0 では、SQLite バージョン 2 よりも同時実行性を改善し、ライター不足の問題を軽減するために設計された、新しいロックおよびジャーナリング メカニズムが導入されました。新しいメカニズムでは、複数のデータベース ファイルを含むトランザクションのアトミック コミットも可能です。

と:

SQLite は、POSIX アドバイザリ ロックを使用して Unix でロックを実装します。Windows では、LockFile()、LockFileEx()、および UnlockFile() システム コールを使用します。

そしてここに

SQLite はファイルシステム ロックを使用して、一度に 1 つのプロセスとデータベース接続のみがデータベースを変更しようとしていることを確認します。ファイルシステムのロック メカニズムは VFS レイヤーに実装されており、オペレーティング システムごとに異なります。SQLite は、この実装が正しいことに依存しています。何か問題が発生し、2 つ以上のプロセスが同じデータベース ファイルに同時に書き込むことができると、重大な損害が発生する可能性があります。

于 2012-11-14T05:27:09.290 に答える