springboot+sqlite+mybatisPlus 单连接压力测试

项目地址:
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.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.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
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_令狐大侠_

觉的文章对你有用,鼓励一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值