赞
踩
项目地址:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。