zoukankan      html  css  js  c++  java
  • EasyNVR 因 sqlite 数据库过大导致访问网页卡顿的优化方案

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

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

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

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

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

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

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

  • 相关阅读:
    Ubuntu 16.04 快速搭建ftp服务(转载)
    emmc协议简介(转载)
    产品经理简介
    小程序常用代码
    微信登录
    sql临时表与变量表
    备份数据库与还原数据库
    JQuery多个异步操作后执行(resolve,promise,when,done)
    苹果IOS下text-shadow与box-shadow失效的解决办法
    jS弹出新窗口被拦截的解决方法
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/15268439.html
Copyright © 2011-2022 走看看