sqlite 解决并发问题 求助

vvilp 2011-06-13 05:59:24
打算使用sqlite+tomcat 实现一个web控制页面

但是我试了一下 两个线程 同时写一个表 或者 同时读写一个表 都会发生锁定的情况

请问如何解决这样的并发操作,由于这个web前端并发的量并不是很大。所以考虑使用sqlite 替换 mysql试试

请大家给点提示吧

谢啦
...全文
862 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
向前看 2011-11-06
  • 打赏
  • 举报
回复
我以前用asp.net和Sqlite做的内容管理系统也发生这个问题。
就是在每个aspx页面请求开始前打开sqlite数据库,等相关操作完成后再关闭。这样经常会产生sqlite数据库被锁定而导致页面运行错误。
后来是这样解决的:
在Application_Start里打开sqlite库,然后把这个DbConnecting保存在Application里,每个页面请求期间不再打开数据库,而是直接用保存的DbConnecting来操作。系统居然运行正常。呵呵

后来分析了一下,这也许是文件型数据库的一个特色。
华芸智森 2011-10-25
  • 打赏
  • 举报
回复
如果人愿意的话,并且在时间上允许的话.你可以给SQLITE加一个行级的锁(重新编译).这样可以解决并发问题了.
不过,这样做性能在单机时会降低很多.
设计思路:
1.新建一个链表.用于记录表名和行号.对UPDATE,INSERT 的行加锁.
2.在SQL执行时,跳过加锁的行.
华芸智森 2011-10-25
  • 打赏
  • 举报
回复
不建议用操作系统的锁....
1.将数据库访问部分做成中间件.
2.使用队列.保证同一时刻只有一个数据库操作.
changing_better 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dd4979590 的回复:]

sqlite怎么加锁?
[/Quote]
不是sqlite加锁,就是你在读写时,加排它锁,保证只有你一个进程在读或者写!这个锁在操作系统里面有,你学会使用就可以!
sevencat 2011-08-30
  • 打赏
  • 举报
回复
mysql用得好好的用什么sqlite呢?
dd4979590 2011-08-30
  • 打赏
  • 举报
回复
sqlite怎么加锁?
lemon_wangjun 2011-08-29
  • 打赏
  • 举报
回复
web 还是不要用Sqlite的好
changing_better 2011-08-23
  • 打赏
  • 举报
回复
不是可以加锁吗?我也在做同样的WEB记录界面。。
cadinfo 2011-08-22
  • 打赏
  • 举报
回复
看样子sqlite已经落伍了,赶紧研究KV型数据库,这个新技术比较狠,性能比sqlite高很多。
例如leveldb
cx820402 2011-07-31
  • 打赏
  • 举报
回复
在exec的时候,加锁。
iihero 2011-06-15
  • 打赏
  • 举报
回复
每次访问数据库的时候,加锁。
vvilp 2011-06-13
  • 打赏
  • 举报
回复
就是一个 控制设备的网页,操作的人不多,所以并发量应该不大,但是实现呢?请给点提示吧

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧