SQLLIte [SQLITE_BUSY] The database file is locked (database is locked) 问题
创始人
2024-12-14 14:05:40

SqlLite是一个嵌入式轻量级文件数据库

  1. 侵入式 。 方便,不需要安装数据库,仅需要一个目录
  2. 轻量级。支持的数据量不大。
  3. 单文件。有文件锁。标题出现的问题就是触发了锁。

所以,sqlLite的锁是库锁,因为sqlLite的数据库就是一个后缀为 .db的文件,文件是有写锁的
因此给sqlLite分配太多链接没有意义。

这个问题就是因为并发触发了sqlLite的锁机制,解决方案就是变成顺序读和写,维护一个链接就可以了.
Hikari 配置示例如下 :

        HikariDataSource hikariDataSource = new HikariDataSource();         hikariDataSource.setAutoCommit(true);         hikariDataSource.setJdbcUrl("jdbc:sqlite:D:/home/sqllite/database-visual/database.db");         // 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒         hikariDataSource.setConnectionTimeout(10 * 60 * 1000);         // 一个连接空闲状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟         hikariDataSource.setIdleTimeout(10 * 60 * 1000);         // 这里是SQLLite数据库,维护一条链接即刻,并非时排队         hikariDataSource.setMinimumIdle(1);         hikariDataSource.setMaximumPoolSize(1); 

SqlLite很难应对高并发场景,sqllite是轻量数据库,适用于各种设备的客户端数据库,客户端直接面向用户,而用户的操作基本上都是顺序的,并且数据量不是很高。

本人在服务器中使用sqllite 使用来记录服务信息和一些不重要,数据量不是很大的订阅任务的,并且订阅信息会自动备份清理,也基本不会产生并并发查询。 大家使用sqllite还需要注意它的特征

相关内容

热门资讯

长光卫星8颗卫星今日出征 将于... 5月17日,长光卫星技术股份有限公司在吉林省航天信息产业园举行“文物01星”、“彩云光学01星”、“...
管网式七氟丙烷气体灭火装置厂家... 导语:管网式七氟丙烷气体灭火装置作为高效环保的消防设备,广泛应用于工业厂房、电力设施、档案馆等场景。...
让好故事更好抵达观众(人文茶座... 牛梦笛 打开手机,嫦娥奔月的故事在AI(人工智能)影像里重现;节气传说、上古神话,在小小屏幕间次第展...
蜂巢能源申请电池模组和电池包专... 国家知识产权局信息显示,蜂巢能源科技股份有限公司申请一项名为“电池模组和电池包”的专利,公开号CN1...
乐道做对了,也稳住了 “两年前,乐道品牌第一次和大家见面。那时候有人问:中国市场还需要一个新品牌吗?纯电品牌真的能活下来吗...