2

java中管理对SqlLite文件的读/写的最佳(最高性能)方法是什么?

1.创建一个连接对象

Connection在应用启动时创建和共享单个对象。在这种情况下,调用是否需要同步/序列化?Java 程序员似乎总是喜欢关闭连接以防止错误代码使连接处于错误状态或未关闭的语句等...

2.为每个事务打开和关闭一个连接

避免了上述问题,如果将来需要,是否允许代码在多线程环境中运行?我还读到一些移动版本的 java 可能需要这种行为。

我希望其他人已经在这方面有经验并且可以分享它,否则我将不得不努力学习。如果有区别,我正在使用xerial jdbc驱动程序

4

1 回答 1

1

SQLite 支持三种不同的线程模式:

  • 单线程。在这种模式下,所有互斥锁都被禁用,SQLite 一次在多个线程中使用是不安全的。

  • 多线程。在这种模式下,SQLite 可以被多个
    线程安全地使用,前提是没有
    在两个或多个线程中同时使用单个数据库连接。

  • 序列化. 在序列化模式下,SQLite 可以不受限制地被多个线程安全使用。

详情见http://www.sqlite.org/threadsafe.html

请注意,我遇到的一个多线程问题是,如果您关闭一个线程中的连接,同时仍从另一个线程中的 ResultSet 读取。如果您使用本机库,这将导致致命的访问冲突错误并使 JVM 进程崩溃。您需要在代码中检测到这种情况,而不是从 ResultSet 中读取,甚至关闭 ResultSet。

于 2013-02-11T19:23:01.723 回答