Java 减少H2上的线程争用
我正在尝试从多个线程在H2上实现更好的insert性能 我尝试了四种不同的设置,每种设置都有20个并发线程执行插入: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的连接): 连接字符串:
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上
jdbc:h2:test;AUTOCOMMIT=OFF;WRITE_DELAY=300;MVCC=TRUE;LOCK_MODE=0;FILE_LOCK=SOCKET