sqlite数据库删除了数据,为什么文件不会变小?
SQLite数据库文件的大小不会自动缩小,即使删除了其中的数据。
这是因为在SQLite中,当数据被删除时,它实际上并没有立即从磁盘上移除,而是被标记为【已删除】,
这种处理机制,被删除的数据仍然占用的空间,
标记【已删除】的作用是以后可以被新插入的数据重用。
如果想减小SQLite数据库文件的大小,你可以使用 VACUUM 命令。
VACUUM 命令会重建数据库文件,使得未使用的空间被回收,并且可以压缩数据库文件。
但是请注意,VACUUM操作可能会花费一些时间,特别是对于大型数据库。
以下是如何在SQLite中使用VACUUM命令的示例:
sql
Copy code
VACUUM;
这将会对当前连接的数据库进行VACUUM操作。
在python中操作:
import sqlite3
# 连接到你的数据库
conn = sqlite3.connect('your_database.db')
# 创建一个游标对象
cur = conn.cursor()
# 执行VACUUM命令
cur.execute('VACUUM')
# 提交事务
conn.commit()
# 关闭连接
conn.close()
如果你想要对特定的数据库进行VACUUM操作,你可以这样做:
sql
Copy code
ATTACH DATABASE 'your_database.db' AS db_name; VACUUM db_name; DETACH DATABASE db_name;
这将会附加指定的数据库,对其进行VACUUM操作,然后断开连接。
在python中操作:
import sqlite3
# 连接到你的数据库
conn = sqlite3.connect(':memory:') # 使用内存中的数据库作为例子
# 创建一个游标对象
cur = conn.cursor()
# 执行ATTACH DATABASE命令
cur.execute('ATTACH DATABASE "your_database.db" AS db_name')
# 执行VACUUM命令
cur.execute('VACUUM db_name')
# 执行DETACH DATABASE命令
cur.execute('DETACH DATABASE db_name')
# 提交事务
conn.commit()
# 关闭连接
conn.close()
sqlite数据库删除了数据,为什么文件不会变小?的更多相关文章
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
- Android 学习笔记之如何使用SQLite数据库来保存数据...
PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite: ...
- Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- SQLite Expert 删除表数据并重置自动增长列
用下面的语句肯定是行不通的,语句不支持 truncate table t_Records 方法:1.删除表数据 2.重置自动增长列 where name='t_Records' /*name :是表名 ...
- [置顶]
flume高并发优化——(14)解决空行停止收集数据问题,及offsets变小问题
日志平台运行一段时间,发现日志有部分丢失,通过检查日志,发现有两个问题导致数据丢失,一个是遇到空行后,日志停止收集,还有就是kafka监控offsets时变小,通过分析代码,找到如下方法: 空行问 ...
- 恢复MySQL数据库删除的数据
在日常运维工作中,对于数据库的备份是至关重要的!数据库对于网站的重要性使得我们对 MySQL 数据库的管理不容有失!然而是人总难免会犯错误,说不定哪天大脑短路了,误操作把数据库给删除了,怎么办? 下面 ...
- Android 开发笔记 “Sqlite数据库删除”
1.代码方式 Context.deleteDatabase(String databaseName);//删除某一数据库 2.设置里面 进入应用程序 ,然后清除数据就ok了
- Mysql数据库删除重复数据
最近因为发现数据库中的表有脏数据,需要维护.这些脏数据就是重复数据,需要将其删除. 现假设有一张test表,主键字段为num,还有id,one,two三个字段.假设id规定只能有一条记录(即需要为id ...
- iOS-防止向SQLite数据库中插入重复数据记录:
原则:先检测该数据库的指定表中,是否已经存在我们要插入的这条数据记录,若已经存在,则不插入这条数据记录(即忽略此次插入操作),若尚不存在,才插入这条数据记录(即才执行此次插入操作) 我们这里使用的是F ...
随机推荐
- vue + canvas 实现涂鸦面板
前言 专栏分享:vue2源码专栏,vue router源码专栏,玩具项目专栏,硬核 推荐 欢迎各位 ITer 关注点赞收藏 此篇文章用于记录柏成从零开发一个canvas涂鸦面板的历程,最终效果如下: ...
- Acwing 周赛88 题解
比赛链接 ·A题 题目描述 给定一个整数\(x\),请你找到严格大于\(x\)且各位数字均不相同的最小整数\(y\). \(1000 \le x \le 9000\) 做法分析 发现数据范围很小,那么 ...
- markdown之mermaid
官方文档 01 简单的流程图 TD或TB:top to bottom,从上到下的流程图 LR:从左到右 其它:RL,BT flowchart LR; A([节点A的圆矩框]) --> |AB之间 ...
- [git]记配置本地git到gitlab并推送
前言 gitlab仓库地址:git@192.168.0.12:godev/gohello.git 步骤 # 配置用户 git config --global user.name "zhang ...
- 重学JavaScript Promise API
在这篇教程中,我们将掌握如何在JavaScript中创建并使用Promise.我们将了解Promise链式调用.错误处理以及最近添加到语言中的一些Promise静态方法. 什么是Promise? 在J ...
- Flutter系列文章-Flutter UI进阶
在本篇文章中,我们将深入学习 Flutter UI 的进阶技巧,涵盖了布局原理.动画实现.自定义绘图和效果.以及 Material 和 Cupertino 组件库的使用.通过实例演示,你将更加了解如何 ...
- 【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像
关于 Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站.用户在使用Cloud Studio 时无需安装,随时随地打开浏 ...
- 使用API接口获取淘宝商品数据的详细指南
在电商行业中,淘宝作为中国最大的在线购物平台,每天有数以百万计的商品被发布和交易.作为程序员,如果需要获取淘宝商品的详细数据,可以通过调用API接口来实现.本文将详细介绍如何使用淘宝API接口获取 ...
- C# object类型与dynamic类型的使用
获取动态变化的类型属性 例: var类型的参数a中包含属性Name或Age 获取这个不固定的数据 首先验证a中存在的是什么属性 /// <summary> /// 验证object类型是否 ...
- OGG-Postgres实时同步到Kafka
(一)数据同步信息 名称 源端 名称 目标端 数据库类型 Postgresql 12.4 组件类型 Kafka IP地址 20.2.127.23 Broker地址 20.2.125.52:9092, ...