HSQLDB 死锁问题处理

栏目: 数据库 · 发布时间: 6年前

内容简介:今天第二次遇到 HSQLDB 死锁的问题,又搜索了一遍解决方案,虽然解决方法很简单,但是非常有必要记录下来。本篇不深究原因,只给出解决方案。在测试代码中使用 HSQLDB 内存数据库时,数据库执行某 SQL 时卡住不动(或者你看不出来和执行 SQL 有关)。此时导出线程堆栈可以看到类似下面的堆栈信息:

今天第二次遇到 HSQLDB 死锁的问题,又搜索了一遍解决方案,虽然解决方法很简单,但是非常有必要记录下来。本篇不深究原因,只给出解决方案。

问题描述

在测试代码中使用 HSQLDB 内存数据库时,数据库执行某 SQL 时卡住不动(或者你看不出来和执行 SQL 有关)。

此时导出线程堆栈可以看到类似下面的堆栈信息: HSQLDB 死锁问题处理

解决办法

HSQLDB 支持三种锁设置: SET DATABASE TRANSACTION CONTROL { LOCKS | MVLOCKS | MVCC } ,分别为 LOCKS | MVLOCKS | MVCC ,默认值为 LOCKS

关于锁的详细介绍看这里: http://hsqldb.org/doc/2.0/guide/sessions-chapt.html

解决方法 1

在内存数据库执行 SQL,先执行 SET DATABASE TRANSACTION CONTROL MVCC ,设置为 MVCC 模式即可。

解决办法 2

DriverManager.getConnection(String url,Properties info);Properties 中设置如下属性和值:

info.setProperty("hsqldb.tx", "mvcc");

解决办法 3

JDBC URL 参数方式: jdbc:hsqldb:mem:test;hsqldb.tx=mvcc

解决办法 4

使用 server.properties 配置的情况下:

hsqldb.tx=mvcc

有关 hsqldb.tx 属性的详细信息可以参考这里: http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

鸟哥的Linux私房菜

鸟哥的Linux私房菜

鸟哥 / 人民邮电出版社 / 2010-6-28 / 88.00元

本书是最具知名度的Linux入门书《鸟哥的Linux私房菜基础学习篇》的最新版,全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口 shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系......一起来看看 《鸟哥的Linux私房菜》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具