首页 > 数据库 >sqlite数据库删除了数据,为什么文件不会变小?

sqlite数据库删除了数据,为什么文件不会变小?

时间:2023-11-28 14:26:06浏览次数:43  
标签:sqlite 变小 数据库 db name VACUUM conn cur

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,变小,数据库,db,name,VACUUM,conn,cur
From: https://www.cnblogs.com/zibuyu2015831/p/17861866.html

相关文章

  • [信创]--达梦DM8数据库-docker方式部署
    下载:https://www.dameng.com/list_103.html下载镜像,上传到指定服务器:载入镜像:查看镜像: 启动容器:dockerrun-d-p5237:5236--restart=always--namedm8--privileged=true-eCASE_SENSITIVE=0\-ePAGE_SIZE=32-eEXTENT_SIZE=32-eUNICODE_FLAG=1-eLENGTH_IN......
  • 聊聊分布式 SQL 数据库Doris(七)
    LSM-TreeDoris的存储结构是类似LSM-Tree设计的,因此很多方面都是通用的,先阅读了解LSM相关的知识,再看Doris的底层存储与读取流程会清晰透彻很多,如下是几个关键的设计:SSTable:SortedStringsTable;一般由一组数据block和一组元数据block组成,数据是已序的。元数据会存储数据bloc......
  • 11月《中国数据库行业分析报告》已发布,一起领略数据库创新应用与前沿学术风采!
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生态发展,目前已更至第十八期,并发布了共计1......
  • 服务器数据库A的备份恢复到服务器B后出现问题解决
    消息10314,级别16,状态11,第2行尝试加载程序集ID65536时,Microsoft.NETFramework出错。服务器可能资源不足,或者程序集可能不受信任,PERMISSION_SET=EXTERNAL_ACCESS或UNSAFE。如上错误提示,解决办法: alterdatabasedatabasenamesettrustworthyon还有更改数据库......
  • Oracle 数据库表空间运维
    --https://blog.csdn.net/hanjianahanjian/article/details/83871567--1、block:是Oracle中存储数据块的最小单位,所以数据最终都是存储在block中。它也被称为逻辑blocks或是页(pages)。每个操作系统都有自己的blocksize。而这里的block是Oracle自己的,不同2于2、extent:OS的blocks......
  • 数据库分类分级做完了,接下来怎么用
    01/7  数据分类分级的难点回顾之前一篇文章内,我们大致讲述了近两年来在各大企业和机构内大热的数据分类分级运动的由来,以及数据分类分级的难点。简单总结起来其困境主要来源于企业内部系统构建的个性化程度高,如基于数据字段命名并无法推测出实质数据类型(见下图所示,text1并不能......
  • ABAP Software component SAP_BASIS 下的数据库表 URS02 的用途介绍
    数据库表USR02是SAP系统中的一个重要表,它用于存储用户的验证信息。在ABAP开发中,我们经常需要与此表进行交互,以管理和验证用户的凭据。这张表里一些主要的字段含义罗列如下:BNAME:登录用户名GLTGV:用户在系统生效的起始时间GLTGB:用户在系统生效的截止时间USTYP:用......
  • 达梦数据库监控部分数据库表信息
    达梦数据库监控部分数据库表信息背景开源和商业的四种数据库已经可以进行数据展示了未来主要是进行国产数据库的监控和部分数据的展示信息本次准备选用达梦数据库的非官方dmdb_exporter进行展示.下载方式为github/同事下载简单使用增加监控指标信息:在default-metr......
  • openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项
    openGauss学习笔记-133openGauss数据库运维-例行维护-日维护检查项133.1检查openGauss状态通过openGauss提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。检查实例状态gs_check-Uomm-iCheckClusterState检查参数openG......
  • 【Flask使用】第6篇:Flask数据库和表单验证。0基础md文档集合(附代码,可自取)
    本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy、增删改查操作、案例、蓝图、单元测......