当前位置:   article > 正文

springboot+sqlite+mybatisPlus 单连接压力测试_java sqlite开启wal模式代码

java sqlite开启wal模式代码

项目地址:
https://github.com/ayzhouwen/zwSqliteTest

注意点:

1.下面是springboot如何配置open模式, wal模式 的代码核心代码,sqlite-jdbc创建连接的代码中会将 Hikari数据源的属性依次创建,所以要改变其他的模式只要 hikariConfig.addDataSourceProperty即可


@Configuration
public class DefaultDatasource {

    @Value("${spring.datasource.driver-class-name}")
    private String driverName;
    @Value("${spring.datasource.url}")
    private String url;
    @Bean
    public DataSource dataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName(driverName);
        hikariConfig.setJdbcUrl(url);
        //sqlite能单连接写,不能多个连接并发写,如果业务层数多线程并发写会报Cause: org.sqlite.SQLiteException: [SQLITE_BUSY]  The database file is locked (database is locked)
        Integer busThreadNum=Runtime.getRuntime().availableProcessors()*2;
        System.out.println("数据库连接数:"+busThreadNum);

        hikariConfig.setMaximumPoolSize(1);
        hikariConfig.setConnectionTestQuery("SELECT 1");
        //在数据源设置打开模式属性值然后在传递给jdbc
        SQLiteConfig config= new SQLiteConfig();
        config.setOpenMode(SQLiteOpenMode.OPEN_URI);
        config.setOpenMode(SQLiteOpenMode.READWRITE);
        config.setOpenMode(SQLiteOpenMode.SHAREDCACHE);
        config.setOpenMode(SQLiteOpenMode.NOMUTEX);
        hikariConfig.setPoolName("springHikariCP");
        hikariConfig.addDataSourceProperty(SQLiteConfig.Pragma.OPEN_MODE.pragmaName, config.getOpenModeFlags());
        hikariConfig.addDataSourceProperty(SQLiteConfig.Pragma.JOURNAL_MODE.pragmaName, SQLiteConfig.JournalMode.WAL );
        HikariDataSource dataSource = new HikariDataSource(hikariConfig);
        return dataSource;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
写操作测试结果:

1.dell i5 32g内存 g3 笔记本固态下测试
执行1000条数据总耗时 7445毫秒 每条记录大概7,8毫秒,tps大概是135
执行10000条数据总耗时 :80214毫秒 每条记录大概8毫秒,tps大概是125
执行100000条数据总耗时 :80214毫秒 每条记录大概8毫秒,tps大概是125
执行100000条数据总耗时 :780002毫秒 每条记录大概7.8毫秒,tps大概是128
2.在死循环极限写入下,并发进行读取没有开启wal模式测试
随机读主键操作执行完1000个记录耗时:2541.0毫秒, 每条记录大概需要2.54毫秒,qps大概:393.55
3.在死循环极限写入下,并发进行读取开启wal模式测试
随机读主键操作执行完1000个记录耗时:513.0毫秒, 每条记录大概需要0.51毫秒,qps大概:1949.32 ,读性能直接提升4倍多

4.神舟战神i7+16g内存机械盘测试
写操作执行完1000个记录耗时:105412.0毫秒, 每条记录大概需要105.41毫秒,tps大概:9.49
5.神舟战神i7+16g内存固态测试
写操作执行完1000个记录耗时:8045.0毫秒, 每条记录大概需要8.04毫秒,tps大概:124.3
写操作执行完10000个记录耗时:83783.0毫秒, 每条记录大概需要8.38毫秒,tps大概:119.36
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
读操作测试结果
1.dell i5 32g内存 g3 笔记本固态下测试:
多连接随机读主键操作执行完10000个记录耗时:399毫秒, 每条记录大概需要0.0399毫秒,tps大概:25000
单连接随机读主键操作执行完10000个记录耗时:1156毫秒, 每条记录大概需要0.1156毫秒,tps大概:8000

2.神舟战神i7+16g内存固态盘测试:
单连接随机读主键操作执行完1000个记录耗时:363.0毫秒, 每条记录大概需要0.36毫秒,qps大概:2754.82
单连接随机读主键操作执行完10000个记录耗时:1681.0毫秒, 每条记录大概需要0.17毫秒,qps大概:5948.84

3.神舟战神i7+16g内存机械盘测试:
单连接随机读主键操作执行完1000个记录耗时:372.0毫秒, 每条记录大概需要0.37毫秒,qps大概:2688.17
单连接随机读主键操作执行完10000个记录耗时:1615.0毫秒, 每条记录大概需要0.16毫秒,qps大概:6191.95
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/636392
推荐阅读
相关标签
  

闽ICP备14008679号