Database 抽真空数据库意味着什么?

Database 抽真空数据库意味着什么?,database,terminology,vacuum,Database,Terminology,Vacuum,正如所引用的,清空数据库的行为完成了什么?这项操作是由所有现代数据库软件支持,还是仅由某些软件支持?这与对文件系统进行碎片整理非常相似。有关的详细信息。它具体指的是SQL lite真空命令。 它正在删除DELETE语句中剩余的空间。用于将事务彼此隔离的数据库需要定期扫描表以删除过时的行副本。在MVCC中,当一行被更新或删除时,它不能立即被回收,因为可能有活动事务仍然可以看到该行的旧版本。与检查是否是这种情况(这可能会非常昂贵)不同,旧的行被认为是相关的。回收空间的过程将推迟到清空表之后,根据数

正如所引用的,清空数据库的行为完成了什么?这项操作是由所有现代数据库软件支持,还是仅由某些软件支持?

这与对文件系统进行碎片整理非常相似。有关的详细信息。

它具体指的是SQL lite真空命令。


它正在删除DELETE语句中剩余的空间。

用于将事务彼此隔离的数据库需要定期扫描表以删除过时的行副本。在MVCC中,当一行被更新或删除时,它不能立即被回收,因为可能有活动事务仍然可以看到该行的旧版本。与检查是否是这种情况(这可能会非常昂贵)不同,旧的行被认为是相关的。回收空间的过程将推迟到清空表之后,根据数据库的不同,该表可以自动或显式启动

“vacuumdb”在MySQL、sqlite和PostgreSQL中。在Postgres中,vacuumdb识别被删除行占用的空间,并对其进行编目以备将来使用“完全真空”进行更全面的检查,并将记录移动到新创建的空间。

真空意味着两件事: 1.回收空间 2.碎片整理文件[种类]

为什么使用真空吸尘器: 1.当您删除数据库对象(如表、视图、索引和触发器)或从表中删除数据时,数据库文件的大小始终会增大,因为SQLite只是将删除的对象标记为自由对象,并将其保留供将来使用

2索引和表变得支离破碎,插入、更新和删除的次数很多

  • 未使用的数据块是通过插入、更新和删除操作创建的
  • 注意事项: 不同的数据库可能会以不同的方式处理此问题:例如在SQLite中 如果使用未关联的rowid,则真空命令将重置rowid值。 但是 如果使用整型主键列,则真空不会更改该列的值


    真空需要空间来复制数据库并运行操作

    碎片整理不是为了回收空间。它是关于重新排序数据以减少碎片。