sqlite能不能多线程并发访问?

sqlite能不能多线程并发访问


慕神8447489
浏览 1116回答 1
1回答

慕标5832272

SQLite作为一款小型的嵌入式数据库,本身没有提供复杂的锁定机制,无法内部管理多路并发下的数据操作同步问题,更谈不上优化,所以涉及到多路并发的情况,需要外部进行读写锁控制,否则SQLite会返回SQLITE_BUSY错误,以驳回相关请求。返回SQLITE_BUSY主要有以下几种情况:1。当有写操作时,其他读操作会被驳回2。当有写操作时,其他写操作会被驳回3。当开启事务时,在提交事务之前,其他写操作会被驳回4。当开启事务时,在提交事务之前,其他事务请求会被驳回5。当有读操作时,其他写操作会被驳回6。读操作之间能够并发执行基于以上讨论,可以看出这是一个典型的读者写者问题,读操作要能够共享,写操作要互斥,读写之间也要互斥可以设计如下的方案解决并发操作数据库被锁定的问题,同时保证读操作能够保持最大并发1。采用互斥锁控制数据库写操作2。只有拥有互斥锁的线程才能够操作数据库3。写操作必须独立拥有互斥锁4。读操作必须能够共享互斥锁,即在第一次读取的时候获取互斥锁,最后一次读取的时候释放互斥锁
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server