前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyNVR 因 sqlite 数据库过大导致访问网页卡顿的优化方案

EasyNVR 因 sqlite 数据库过大导致访问网页卡顿的优化方案

原创
作者头像
TSINGSEE青犀视频
修改2021-09-15 17:51:03
4890
修改2021-09-15 17:51:03
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

作为视频直播平台,EasyNVR在视频直播时收到网络或者摄像头影响的卡顿是非常正常的现象,但也有可能出现非网络及摄像头配置影响的卡顿。EasyNVR一个项目现场,突然出现访问网页页面非常卡顿的现象,一个页面大概需要4s以上才能够响应显示,这个网页的响应明显就与摄像头配置无关了。

在我们确定网络状况无问题之后,先查看了EasyNVR数据库,发现只有1000条左右的数据,所以可以排除数据库的原因。但是在查看数据库大小的时候,发现数据库大小有 151MB,数据库过大,导致查询数据库很慢,因此出现响应慢的问题。

Sqlite3 在运行过程中,如果频繁进行删除和更新操作,会增加文件的碎片化,导致数据库增大,因此需要对数据库进行处理。

在代码中添加新的代码如下:

代码语言:javascript
复制
// sqlite 的特性在运行一段时间后,如果频繁删除或者更新数据,会导致文件变大,消除空闲页
func VacummSqlite() {
   if gUseDb == consts.SqliteDb && database != nil {
      database.Exec("VACUUM;")
      // fmt.Println(time.Now().Format(time.StampMilli) + " 运行了一次 VACUUM ")
   }
}

在软件初始化运行和每天晚上运行一次该方法,可以将对应的数据库重新消除空闲页,反碎片化,加快查询速度。

运行完毕,该数据库减小到 140KB。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档