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

摘要:
作为视频直播平台,EasyNVR在视频直播时收到网络或者摄像头影响的卡顿是非常正常的现象,但也有可能出现非网络及摄像头配置影响的卡顿。EasyNVR一个项目现场,突然出现访问网页页面非常卡顿的现象,一个页面大概需要4s以上才能够响应显示,这个网页的响应明显就与摄像头配置无关了。在我们确定网络状况无问题之后,先查看了EasyNVR数据库,发现只有1000条左右的数据,所以可以排除数据库的原因。

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

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

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

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

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

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

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

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

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

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

免责声明:文章转载自《EasyNVR 因 sqlite 数据库过大导致访问网页卡顿的优化方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇开源中国社区项目部署protocol(协议)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server2012数据库开启远程连接

在我们使用SQL Server数据库的时候很重要的一点就是开启数据库的远程连接,这是因为很多时候数据库部署在远程的服务器上会比较方便,而部署在客户端的话,由于客户端不固定,所以需要经常去部署,这样容易经常去改变数据库,从而造成系统不稳定,但是部署在服务器上我们需要远程连接,而当我们安装好一个数据库之后,默认是不开启数据库远程连接的,那么该怎样一步步去打开远...

在重命名SqlServer数据库时,报5030错误的解决办法

数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use master select spid from master.dbo.sysprocesses where dbid=db_id('数据库原名') 执行下面这条语句杀掉连接进程就OK了 use master kill 54...

MSSQL Server 数据库备份还原常用SQL语句及注意

1.备份数据库 backup database db_name to disk='d:db_name.bak' with format --通过使用with format可以做到覆盖任何现有的备份和创建一个新的媒体集。--可以避免一些由于备份设置产生的错误.--帮助文档上的解释:--format指定应将媒体头写入用于此备份操作的所有卷。--任...

Oracle数据库定义语言(DDL)

--使用Create遇见创建表 Create Tabletable_name ( column_name datatype [null|not null], column_name datatype [null|not null], ... [constraint]); --语法说明 table_name:数据库表名称。 column_name:表字段...

jira中使用eazyBI

参考:https://docs.eazybi.com/eazybijira/set-up-and-administer/set-up-and-administer-for-jira-server/installation-and-setup 安装前的清单 Jira内存设置 在安装eazyBI之前,请检查您当前的Jira内存设置。如果您的Jira服务器没有足...

PHP大批量更新数据,大批量插入数据,mysql批量更新与插入多种方法

在工作中遇到了需要大批量的更新同步数据,首先用了个笨方法测试,那就是for循环插入与更新。由于数据是从另外一个大型网站的接口中获取的,我本地需要进行处理后,再进行更新与判断,程序执行完成之后,发现耗时太长,仅仅五千条数据就耗时了五个小时左右,非常耗时间。 在进行更新与插入的操作的时候,我们首先必须考虑到文件执行时间的问题。当php文件执行时间过长时,服务器...