(c#)unity中sqlite多线程同时开启事务会导致非常慢

在程序使用sqlite后,变慢了4秒.看看插入量,并不多,还开了事务,怎么都不可能卡上4秒.测了好久才发现,多线程一起开事务就变成单线程了.

其实原先我就看到了这个说法,还测试过.当时测试发现速度很快,没受影响.我误以为是只有提交事务时才变单线程.原来是因为当时多线程使用的是同一个连接,所以没受影响.后来发现同一个连接在多线程一起用事务有时会报错,就改成了每个线程独立连接,然后从开启线程到提交的整个过程就会变成单线程.所以多线程中用事务的话要尽量缩短开启到提交的时间.我中间有大量其它代码,所以就很慢.

因为害怕多线程一起修改时报错,sqlite相关的设置基本是默认的serialize这种.我看到说两个线程同时想要写数据库有可能发生死锁而报错,不敢开更不安全的设置.真要两个线程一起写就可能死锁而报错也太不安全了,不知道是一直这样还是已经修复了?有懂的没?

使用插件:Mono.Data.Sqlite

补充:各线程使用独立连接时,即使已经努力缩短单个事务的连接,只要事务中有插入,我这程序依然非常慢.单独写个程序测试又没这种问题.搞不清原理.之后尝试用一个公共连接,用锁控制多线程访问,速度就很快了.

相关推荐
hnlucky18 分钟前
redis 数据类型新手练习系列——Hash类型
数据库·redis·学习·哈希算法
LucianaiB1 小时前
【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来
运维·数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
时序数据说1 小时前
时序数据库IoTDB在航空航天领域的解决方案
大数据·数据库·时序数据库·iotdb
.生产的驴2 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
AnsenZhu2 小时前
2025年Redis分片存储性能优化指南
数据库·redis·性能优化·分片
oydcm2 小时前
MySQL数据库概述
数据库·mysql
oioihoii2 小时前
C++23中if consteval / if not consteval (P1938R3) 详解
java·数据库·c++23
带娃的IT创业者2 小时前
《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现
数据库·人工智能
小杰love编程3 小时前
Django 入门指南:构建强大的 Web 应用程序
前端·django·sqlite
husterlichf4 小时前
MYSQL 常用数值函数 和 条件函数 详解
数据库·sql·mysql