首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌入式数据库H2、Hsqldb、Apache Derby、SQLite (JDBC)中的并发性

嵌入式数据库H2、Hsqldb、Apache Derby、SQLite (JDBC)中的并发性
EN

Stack Overflow用户
提问于 2015-05-28 15:58:15
回答 3查看 2.7K关注 0票数 4

是否可以在同一台具有不同进程的计算机(没有服务器)上同时使用嵌入式数据库(读/写)。那么,在一个多线程进程中并发读写又如何呢?

我试图找出在HSQL、H2、Apache和SQLite (通过xerial )中如何解决并发问题,但我不太明白那些锁定机制(MVCC、OCC等),所以我需要有人纠正我发现的内容。

  1. H2:只有一个进程(可能是多线程)可以连接到数据库。
    • 用于写读操作的表级锁定不需要锁,可以与写同时执行(N读取器、一个写入器)
    • MVCC -用于写操作的表或行级锁定(N读取器,一个编写器??)

  1. Hsql:看起来与H2完全相同,但在MVCC机制上有一些不同。
  2. Apache (JavaDB):只有一个进程(可能是多线程)可以连接到数据库。
    • 用于写操作的表级锁定或行级锁定。读取操作不需要锁,可以与写同时完成(N读取器,一个写入器)

  1. SQLite (xerial ):多个进程可以同时连接,但只有一个进程可以执行写操作。(数据库锁定)。
    • 当存在写锁时,其他进程或线程不能执行读写操作??

EN

回答 3

Stack Overflow用户

发布于 2015-05-28 22:20:15

HSQLDB支持它所支持的所有三个事务模型(MVCC、LOCKS和MVLOCKS,即具有表级锁的MVCC )中的完全多线程操作。

如果HSQLDB是在没有服务器的情况下运行的,根据定义,它是嵌入它的进程的一部分。该进程可以使用多个线程同时访问数据库(例如嵌入HSQLDB的web服务器,如TOMEE )。在没有数据库服务器的嵌入式部署中,没有其他进程可以看到数据库.

在所有的模式中,N作者和M读者可以同时工作。锁模式锁定表以进行读和写,但MVCC模式只锁定已更新的行。

还可以在嵌入HSQLDB的进程中运行服务器。这样的服务器允许与嵌入数据库的进程同时访问其他进程。

票数 1
EN

Stack Overflow用户

发布于 2015-05-29 11:41:12

还有MySQL嵌入式系统,人们通常认为它的读写工作负载比大规模OLTP目标服务器更轻--通常是写的--而不是典型的工作负载。

https://github.com/vorburger/MariaDB4j

我不知道这个项目或其他Java化是否好。

票数 1
EN

Stack Overflow用户

发布于 2015-05-29 00:37:54

Firebird 2.5可能是单进程多线程方法的一种选择

Is Firebird good embedded DB for ASP.NET? Which else?

但是您必须建立几个连接(每个线程一个)。

  • 1080388197
  • http://forums.devshed.com/firebird-sql-development-61/fb-embedded-multihreading-152548.html

更新:在Firebird 3中,嵌入式(进程内)服务器(或多个,如果有多个OS进程使用嵌入式服务器DLL/LIB.SO)和经典模式独立服务器(基本上现在是嵌入式dll的OS进程加载器)可以与同一个数据库文件同时工作。超级服务器模式的独立FB3虽然锁定了数据库文件以进行独占访问.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30511616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档