VACUUM --数据库中 回收垃圾空间和收集优化器统计数据的语句
来源:互联网 发布:淘宝网童装男童秋装 编辑:程序博客网 时间:2024/06/08 05:47
VACUUM
名字
VACUUM -- 回收垃圾空间和收集优化器统计数据
语法
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
描述
VACUUM 命令回收数据库的垃圾空间。如果不带任何参数,VACUUM将回收当前数据库中的每个表中的垃圾空间,如果指定了参数,VACUUM只回收指定的表中的垃圾空间。
VACUUM ANALYZE 除了回收垃圾空间还收集优化器统计数据。参考ANALYZE命令得到收集优化器统计数据的信息。
VACUUM命令如果没有指定FULL选项,它将进行普通的垃圾收集,将垃圾空间标识为可用的状态。它不会影响其它事务发出的表上的读操作和写操作,因为普通的垃圾收集不会在表上加一个互斥锁。
VACUUM FULL则会启动完全垃圾收集,完全垃圾收集会在表上加一个互斥锁,对表进行垃圾回收期间,其它的事务不能对表进行读操作和写操作。VACUUM FULL比VACUUM的执行时间要长一些,执行的操作也多一些,它在进行垃圾收集的过程中,可能会将一个记录从一个数据块转移到另一个数据块。
参数
FULL
启动完全垃圾收集模式。
VERBOSE
输出垃圾收集的详细数据。
ANALYZE
同时进行收集优化器统计数据的操作。
table
表的名字(可以用模式修饰)。将对该表进行垃圾回收操作。
column
列的名字。将对该列进行垃圾回收操作。默认是表中的所有列。
输出
如果指定了VERBOSE 选项,VACUUM将会输出详细的垃圾收集统计数据。
注意
不能在事务里面执行VACUUM命令。如果一个表中增加或删除了大量的数据,应该对该表执行VACUUM ANALYZE命令。
不要经常使用VACUUM FULL,因为它会用互斥的模式锁住表。VACUUM FULL可以减少一个表所占的物理存储空间的大小,从而扫描表中的数据时,花的时间更短。如果一个大表中的大部分数据被删除,可以对该表执行VACUUM FULL操作。VACUUM FULL不会减少表上的索引占的物理存储空间,REINDEX命令才能减少索引占的物理存储空间。有时候,删除表上的索引,对表执行VACUUM FULL,然后再重建索引比对表执行VACUUM FULL,对索引执行REINDEX要快一些。
例子
(1)下面的命令回收表onek中的垃圾空间,同时收集该表的优化器统计数据:
regression=# VACUUM VERBOSE ANALYZE onek;
INFO: vacuuming "public.onek"
INFO: index "onek_unique1" now contains 1000 tuples in 14 pages
DETAIL: 3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.08u sec elapsed 0.18 sec.
INFO: index "onek_unique2" now contains 1000 tuples in 16 pages
DETAIL: 3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.07u sec elapsed 0.23 sec.
INFO: index "onek_hundred" now contains 1000 tuples in 13 pages
DETAIL: 3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.08u sec elapsed 0.17 sec.
INFO: index "onek_stringu1" now contains 1000 tuples in 48 pages
DETAIL: 3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.09u sec elapsed 0.59 sec.
INFO: "onek": removed 3000 tuples in 108 pages
DETAIL: CPU 0.01s/0.06u sec elapsed 0.07 sec.
INFO: "onek": found 3000 removable, 1000 nonremovable tuples in 143 pages
DETAIL: 0 dead tuples cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.07s/0.39u sec elapsed 1.56 sec.
INFO: analyzing "public.onek"
INFO: "onek": 36 pages, 1000 rows sampled, 1000 estimated total rows
VACUUM
兼容性
SQL标准中没有VACUUM命令。
- VACUUM --数据库中 回收垃圾空间和收集优化器统计数据的语句
- sql中 vacuum命令:回收空白空间,减少数据库大小
- JVM 垃圾回收步骤和垃圾收集器的种类
- 垃圾收集器回收对象的依据和时机
- JVM垃圾回收算法和收集器
- JAVA 垃圾收集器和回收策略
- JVM垃圾回收算法和垃圾收集器笔记
- Jvm垃圾收集器和垃圾回收算法
- Jvm垃圾收集器和垃圾回收算法
- JVM垃圾回收策略和垃圾收集器
- 垃圾收集算法、垃圾回收算法、java垃圾收集器
- Java虚拟机的垃圾回收和收集算法
- GC垃圾回收,垃圾收集器
- 数据库优化之响应速度优化和空间回收
- JVM中Hotspot虚拟机中时常被问及的垃圾收集算法和垃圾收集器
- 【转载】Flex垃圾回收和性能优化的一些总结
- java回收垃圾和性能优化-精简的内容
- 3、垃圾收集之回收的对象
- 递归方法判断数组是否为递增数组
- DTM DEM DSM 介绍
- shell数组
- ACM里的一些缩写
- POJ 1724
- VACUUM --数据库中 回收垃圾空间和收集优化器统计数据的语句
- Bitbucket 和 Git 使用详解(持续更新中)
- Oracle(基础整理)
- Shapefile文件格式分析
- 使用inotify进行文件事件通知
- 破除“系统学习”的情结
- 二维表
- HDU1207;汉诺塔II
- Oracle 数据库对timestamp的处理