Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 减少H2上的线程争用_Java_H2 - Fatal编程技术网

Java 减少H2上的线程争用

Java 减少H2上的线程争用,java,h2,Java,H2,我正在尝试从多个线程在H2上实现更好的insert性能 我尝试了四种不同的设置,每种设置都有20个并发线程执行插入: 共享连接 共享连接禁用自动提交 连接池 连接池正在禁用自动提交 使用选项4获得最佳结果: 使用以下命令创建的表: create table foo (id int not null auto_increment primary key, name varchar(50)) 插入代码(c是来自org.h2.jdbcx.JdbcConnectionPool的连接): 连接字符串:

我正在尝试从多个线程在H2上实现更好的insert性能

我尝试了四种不同的设置,每种设置都有20个并发线程执行插入:

  • 共享连接
  • 共享连接禁用自动提交
  • 连接池
  • 连接池正在禁用自动提交
  • 使用选项4获得最佳结果:

    使用以下命令创建的表:

    create table foo (id int not null auto_increment primary key, name varchar(50))
    
    插入代码(c是来自org.h2.jdbcx.JdbcConnectionPool的连接):

    连接字符串:

    jdbc:h2:test;AUTOCOMMIT=OFF;WRITE_DELAY=300;MVCC=TRUE;LOCK_MODE=0;FILE_LOCK=SOCKET
    
    是否有可能以某种方式减少线程争用

    附言:

    • 获取生成的密钥非常重要
    • 可以选择将H2切换到另一个嵌入式数据库;但是,请注意,答案应该集中在H2上

    我们使用了和选项。它们似乎确实有助于解决一些争用问题,但它们不是万能的。

    我已经在使用MVCC了。已将连接字符串添加到问题。是否尝试使用多线程选项?这就是我在回答中所建议的,我将正确地考虑你的答案,因为这似乎是减少线程争用的最佳选择。
    jdbc:h2:test;AUTOCOMMIT=OFF;WRITE_DELAY=300;MVCC=TRUE;LOCK_MODE=0;FILE_LOCK=SOCKET