sqlite不会自动缩减问题

  1. 今天在测试智能RTU的时候,遇到个事情就是在进行查看AI报警的时候,发现页面查询很慢,但是查网络服务80端口是开启的,发现进程没有被关闭(或者segment,也就是断了),但是就是无法查询数据,经过FinaShell工具,发现cpu占据90%以上,通过top命令看到appweb的进程占据了81%,以前从来没有这么大使用cpu的历史,通过把数据库获取下来,发现一个sqlite数据库居然146M的数据,经过查询ai_recorder这张表有198万的数据,而且是最近3天的数据,2月1号到8点的数据居然就有23万的数据,最后发现每1秒钟写入8条数据,由于大量的数据,造成sqlite数据库对这张表的查询异常慢,后来给这张表增加了索引终于把cpu下降到了50%以下,看来sqlite的索引对cpu还是有很大的影响
  2. sqlite数据库遇到个问题,就是删除掉数据之后,sqlite数据库不会自动缩小,需要执行VACUUM这个命令才能变小,使用工具的时候delete完之后,调用这个VACUUM命令,但是在代码中,需要在commit之前执行VACUUM命令

https://www.cnblogs.com/zibuyu2015831/p/17861866.html

import sqlite3

连接到你的数据库

conn = sqlite3.connect('your_database.db')

创建一个游标对象

cur = conn.cursor()

执行VACUUM命令

cur.execute('VACUUM')

提交事务

conn.commit()

关闭连接

conn.close()

这个没有验证,

我使用的是在建数据库的时候,设置auto_vaccum = 1的方式

PRAGMA auto_vacuum=full;

sqlite> PRAGMA auto_vacuumm=none;

sqlite> PRAGMA auto_vacuum=incremental;

sqlite> PRAGMA auto_vacuum=fuall;

0或none:禁用Aato_vacuum。这是默认模式,意味着数据库文件尺寸大小不会缩小,除非手动使用VACUUM命令。

1或full:启用Aato_vacuum。是全自动的,在该模式下,允许数据库文件随着数据从数据移除而缩小。

2或incremental:启用Aato_vacuum,但是必须手动激活。在模式下,引用数据被维持,免费页面只放在免费列表中这些页面在任何时候使用incremental_vacuum pragma进行覆盖。

但是通过这种方式也不行,最后通过Sqliteman-1.2.2-win32(pragmas)软件设置auto_vacuum=1,来实现了(changevalue)

相关推荐
jumin180610 分钟前
python采用jdbc连接oracle
python·oracle
励志五个月成为嵌入式糕手19 分钟前
0820 SQlite与c语言的结合
c语言·oracle·sqlite
DemonAvenger1 小时前
高效JOIN操作:多表关联查询技巧与实战经验分享
数据库·mysql·性能优化
小云数据库服务专线2 小时前
GaussDB 数据库架构师修炼(十八) SQL引擎-分布式计划
数据库·数据库架构·gaussdb
秋已杰爱3 小时前
Redis分布式锁
数据库·redis·分布式
haogexiaole10 小时前
Redis优缺点
数据库·redis·缓存
在未来等你10 小时前
Redis面试精讲 Day 27:Redis 7.0/8.0新特性深度解析
数据库·redis·缓存·面试
新法国菜12 小时前
MySql知识梳理之DML语句
数据库·mysql
老华带你飞12 小时前
校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园交友网站
许泽宇的技术分享12 小时前
Text2API与Text2SQL深度对比:自然语言驱动的数据交互革命
数据库·windows·microsoft