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

liuxinxing70 liuxinxing70 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在搞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()之后阻塞了,这种情况在数据包突发比较多的时候,或是连续一段时间数据包捕获的比较多的时候,容易阻塞。程序也只是一个进程,也没有多线程,有没有大神帮看一下程序对数据库的操作流程有没有什么问题,跪谢
...全文
评论
收藏 已收藏
分享
返回顶部
liuxinxing70
其他数据库 2,208 成员 9,519 内容