有关linux下的sqlite3 问题,跪求大神帮忙看一下

liuxinxing70 2015-08-20 06:51:24
最近在搞linux抓数据包进行信息提取,存储数据库的程序。程序流程大概是这样:

sqlite3_exec(db, "begin transaction",0,0,0);
init_sigaction();
init_time(); //用来定时一秒执行数据库操作

while(1){
/*
code 从管道获取数据包的信息的一段程序
数据包每秒 大概几百 到两三千以上 不定
*/
sprintf(SQL,.....); //拼接 insert SQL语句
sqlite3_exec(db, SQL, 0, 0, &ErrMsg);
/*
code 分析数据包信息 存在一些数据结构中
*/
}


//这是每秒去执行的数据库一些操作
save_db()
{
sqlite3_exec(db, "commit transaction",0,0,&ErrMsg); //提交事务
sqlite3_exec(db, "begin transaction", 0, 0, &ErrMsg);

code...//执行一些其他操作
}

现在的问题是 程序 会 阻塞(应该是从1秒的那个程序返回到 主循环中之后),bt 看是进入sqlite3_mutex_enter()之后阻塞了,这种情况在数据包突发比较多的时候,或是连续一段时间数据包捕获的比较多的时候,容易阻塞。程序也只是一个进程,也没有多线程,有没有大神帮看一下程序对数据库的操作流程有没有什么问题,跪谢
...全文
152 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,209

社区成员

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

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