注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

关于qt sqlite做IM聊天记录的几点改进思考  

2014-11-11 13:08:39|  分类: Windows开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于qt sqlite做IM聊天记录的几点改进思考
问题是有的,测试也很难测出来,毕竟很多是小概率问题,这个只有我们开发自己清楚了。
1. 多线程访问
大部分情况下,是不需要多线程访问的。但是在使用过程中,我曾经错误地使用了REPLACE INTO,这个导致性能低下。考虑到较大的数据量插入的情况,特定加了一个线程负责INSERT数据,其实 这个并非必要的。
另外一种情况,就是消息记录的导入导出。这个必须使用多线程,但是如果此时有其他的需要查询或者插入数据库,sqlite会短暂地锁住,超时则返回了失败,概率很小。
综合这两种情况,改进方案如下:
修改qt源码文件qsql_sqlite.cpp,改为:int openMode = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX。
注意:这种修改对多个连接也是加锁的,如果多线程下,采用了多个数据库连接,那可能会导致死锁。代码编写时应该考虑到各种情况!

2. 基于事务模式
在消息导入时,为了更快地处理,可以使用事务的方式替代。但是这样虽然快了,commit时会很慢,各有利弊吧。
by: zhanyonhu
  评论这张
 
阅读(434)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016