Postgresql表和索引占用空间回收释放(表空间膨胀)

2024-09-03 00:20

本文主要是介绍Postgresql表和索引占用空间回收释放(表空间膨胀),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Postgresql表和索引占用空间回收释放(表空间膨胀)


-- 1.创建测试表t_user
create table if not exists t_user(id serial primary key,user_name varchar(255),pass_word varchar(255),create_time date,dr char(1)
);create index ind_time on t_user(create_time);-- 2.注释
comment on column t_user.id is '测试表';
comment on column t_user.user_name is '账号';
comment on column t_user.pass_word is '密码';
comment on column t_user.create_time is '创建日期';
comment on column t_user.dr is 'delete remark';-- 创建存储过程插入数据
create or replace function batch_insert_proc(num int) returns void as 
$$
beginwhile num > 0 loopinsert into t_user(user_name,pass_word,create_time,dr) values('username'||round(random()*num),'password'||round(random()*num),now(),0);num = num -1;end loop;
exceptionwhen others thenraise exception'(%)',SQLERRM;
end;
$$ language plpgsql;-- 插入100*10000条数据
select batch_insert_proc(1000*1000); --分析表统计信息
analyze t_user;--查询统计信息
SELECTrelname AS "表名",seq_scan AS "顺序扫描次数",seq_tup_read AS "顺序扫描行数",idx_scan AS "索引扫描次数",idx_tup_fetch AS "通过索引获取的行数",n_tup_ins AS "插入的行数",n_tup_upd AS "更新的行数",n_tup_del AS "删除的行数",n_live_tup AS "表中当前行数",n_dead_tup AS "表中已删除的行数",last_vacuum AS "上次VACUUM操作的时间",last_autovacuum AS "上次自动VACUUM操作的时间",last_analyze AS "上次ANALYZE操作的时间",last_autoanalyze AS "上次自动ANALYZE操作的时间"
FROM pg_stat_user_tables;--查询表数据量大小信息SELECTtable_size.relname 表名,pg_size_pretty ( pg_relation_size ( relid ) ) 表数据大小,pg_size_pretty ( pg_indexes_size ( relid ) ) 表总索引大小,pg_size_pretty ( pg_total_relation_size ( relid ) ) 表总大小,表行数 
FROM
pg_stat_user_tables table_sizeLEFT JOIN (SELECTrelname,reltuples :: DECIMAL ( 19, 0 ) 表行数 FROMpg_class rJOIN pg_namespace n ON ( relnamespace = n.oid ) WHERErelkind = 'r' AND n.nspname = 'public' ) table_num ON table_num.relname = table_size.relname 
WHEREschemaname = 'public' 
ORDER BYpg_relation_size ( relid ) DESC;--查询表的大小信息表名  | 表数据大小 | 表总索引大小 |  表总大小  | 表行数  
--------+------------+--------------+------------+---------t_user | 71 MB      | 21 MB        | 93 MB      | 1000000tab1   | 8192 bytes | 0 bytes      | 8192 bytes |       1
(2 rows)--物理文件大小信息
[postgres@SJZTproxy-103-38 16646]$ du -sh 16675
72M     16675
[postgres@SJZTproxy-103-38 16646]$ du -sh 16677
22M     16677--备注:
--获取表的物理文件路径
select pg_relation_filenode('t_user'),pg_relation_filepath('t_user');
--查看索引对应的物理文件路劲
select pg_relation_filenode('ind_time'),pg_relation_filepath('ind_time');--truncate前数据文件大小 
[postgres@SJZTproxy-103-38 16646]$ ls -l 16661
-rw------- 1 postgres postgres 6832128 Sep  2 16:54 16661
[postgres@SJZTproxy-103-38 16646]$ 
[postgres@SJZTproxy-103-38 16646]$ du -sh 16661
6.6M    16661dbtest=> truncate table t_user;
TRUNCATE TABLE--truncate后数据文件大小
[postgres@SJZTproxy-103-38 16646]$ du -sh 16661
0       16661--删除索引drop index t_user_pkey;

这篇关于Postgresql表和索引占用空间回收释放(表空间膨胀)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131487

相关文章

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序