多客户端的 HSQLDB 性能如何

Posted

技术标签:

【中文标题】多客户端的 HSQLDB 性能如何【英文标题】:What is the performance of HSQLDB with several clients 【发布时间】:2012-07-04 05:40:00 【问题描述】:

我想在具有 5 到 30 个客户端的服务器中使用 HSQLDB +Hibernate,这些客户端将相当密集地写入数据库。 每个客户端将每 30 秒(24/7,大约 10 亿行/天)在单个表中保留十几万行,并且客户端还将在随机时间或多或少地在数据库中查询几千行每 5 到 10 秒两次请求的平均频率。

HSQLDB 可以处理这样的用例还是应该切换到 mysql/PostgreSQL ?

【问题讨论】:

【参考方案1】:

您正在查看每秒总共 2000 - 12000 次写入和 5000 - 30000 次读取。

借助快速硬件,HSQLDB 可能可以使用持久内存表来处理这个问题。使用 CACHED 表,它可能能够处理固态磁盘的较低范围(磁盘寻道时间是主要参数)。

查看此测试。您可以将它与 MySQL 和 PostgresSQL 一起运行以进行比较。

http://hsqldb.org/web/hsqlPerformanceTests.html

【讨论】:

【参考方案2】:

你应该切换。 HSQLDB 不适用于关键应用程序。为数据损坏和随着时间的推移降低启动性能做好准备。

主要负面炒作来自JBoss:https://community.jboss.org/wiki/HypersonicProduction

另见http://www.coderanch.com/t/89950/JBoss/HSQLDB-production

另见类似问题:Is is safe to use HSQLDB for production? (JBoss AS5.1)

【讨论】:

好吧,那个页面已经过时了。那时 HSQLDB 没有事务隔离。如今,它应该可以更好地处理交易。实际上,我们确实成功地将 HSQLDB 用于关键应用程序,但是是嵌入式的。现在我的问题是服务器模式。 好吧,提问者已经被警告了。 另外,无论 HSQLDB 如何处理事务,内存中的表在事务结束后不能原子地保证持久性是 imo 不适用于生产的。 @Ondra HSQLDB 具有基于磁盘的模式,并且可以在提交时保留数据。 在您投反对票之前,答案如下:“很晚,但有了更多经验,我现在可以自信地回答说,HSQLDB 不可能满足要求。这是一个高度优化的客户端-服务器数据库引擎。”

以上是关于多客户端的 HSQLDB 性能如何的主要内容,如果未能解决你的问题,请参考以下文章

c# socket多连接(如何达到10万个客户端)

高性能高并发服务器架构设计探究—以flamigo服务器代码为例

APP客户端的性能

Android客户端性能测试—内存先码

HSQLDB - 9.0 之前的客户端尝试连接

WCF 服务和内部客户端的性能问题