PostgreSQL中的删除列操作是什么
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,本篇内容主要讲解"PostgreSQL中的删除列操作是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PostgreSQL中的删除列操作是什么"吧!创建
千家信息网最后更新 2024年11月16日PostgreSQL中的删除列操作是什么
本篇内容主要讲解"PostgreSQL中的删除列操作是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PostgreSQL中的删除列操作是什么"吧!
创建数据表
[local:/data/run/pg12]:5120 pg12@testdb=# create table t_drop(id int);CREATE TABLE[local:/data/run/pg12]:5120 pg12@testdb=# insert into t_drop select generate_series(1,10000000);INSERT 0 10000000[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) ); pg_size_pretty ---------------- 346 MB(1 row)
新增列
[local:/data/run/pg12]:5120 pg12@testdb=# \timing onTiming is on.[local:/data/run/pg12]:5120 pg12@testdb=# ALTER TABLE t_drop ADD COLUMN c1 text DEFAULT md5( random()::text );ALTER TABLETime: 45769.146 ms (00:45.769)[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) ); pg_size_pretty ---------------- 651 MB(1 row)Time: 0.840 ms[local:/data/run/pg12]:5120 pg12@testdb=#
新增列后,占用空间达到了651MB.
删除列
[local:/data/run/pg12]:5120 pg12@testdb=# alter table t_drop drop c1;ALTER TABLETime: 2.886 ms[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) ); pg_size_pretty ---------------- 651 MB(1 row)Time: 1.788 ms[local:/data/run/pg12]:5120 pg12@testdb=#
删除列,但空间没有释放.
数据字典
[local:/data/run/pg12]:5120 pg12@testdb=# \d pg_attribute Table "pg_catalog.pg_attribute" Column | Type | Collation | Nullable | Default ---------------+-----------+-----------+----------+--------- attrelid | oid | | not null | attname | name | | not null | atttypid | oid | | not null | attstattarget | integer | | not null | attlen | smallint | | not null | attnum | smallint | | not null | attndims | integer | | not null | attcacheoff | integer | | not null | atttypmod | integer | | not null | attbyval | boolean | | not null | attstorage | "char" | | not null | attalign | "char" | | not null | attnotnull | boolean | | not null | atthasdef | boolean | | not null | atthasmissing | boolean | | not null | attidentity | "char" | | not null | attgenerated | "char" | | not null | attisdropped | boolean | | not null | attislocal | boolean | | not null | attinhcount | integer | | not null | attcollation | oid | | not null | attacl | aclitem[] | | | attoptions | text[] | C | | attfdwoptions | text[] | C | | attmissingval | anyarray | | | Indexes: "pg_attribute_relid_attnam_index" UNIQUE, btree (attrelid, attname) "pg_attribute_relid_attnum_index" UNIQUE, btree (attrelid, attnum)[local:/data/run/pg12]:5120 pg12@testdb=# select attrelid,attname,atttypid,attisdropped from pg_attribute where attrelid = 't_drop'::regclass; attrelid | attname | atttypid | attisdropped ----------+------------------------------+----------+-------------- 994249 | tableoid | 26 | f 994249 | cmax | 29 | f 994249 | xmax | 28 | f 994249 | cmin | 29 | f 994249 | xmin | 28 | f 994249 | ctid | 27 | f 994249 | id | 23 | f 994249 | ........pg.dropped.2........ | 0 | t(8 rows)Time: 0.896 ms[local:/data/run/pg12]:5120 pg12@testdb=#
查看数据字典,发现删除的c1列变为pg.dropped.2,逻辑标记为删除.
使用vacuum/vacuum full回收空间.
[local:/data/run/pg12]:5120 pg12@testdb=# vacuum t_drop;VACUUMTime: 2510.368 ms (00:02.510)[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) ); pg_size_pretty ---------------- 651 MB(1 row)Time: 0.718 ms[local:/data/run/pg12]:5120 pg12@testdb=# vacuum full t_drop;VACUUMTime: 7996.658 ms (00:07.997)[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) ); pg_size_pretty ---------------- 346 MB(1 row)Time: 1.258 ms[local:/data/run/pg12]:5120 pg12@testdb=#
但数据字典仍保留删除列的信息
[local:/data/run/pg12]:5120 pg12@testdb=# select attrelid,attname,atttypid,attisdropped from pg_attribute where attrelid = 't_drop'::regclass; attrelid | attname | atttypid | attisdropped ----------+------------------------------+----------+-------------- 994249 | tableoid | 26 | f 994249 | cmax | 29 | f 994249 | xmax | 28 | f 994249 | cmin | 29 | f 994249 | xmin | 28 | f 994249 | ctid | 27 | f 994249 | id | 23 | f 994249 | ........pg.dropped.2........ | 0 | t(8 rows)Time: 0.757 ms[local:/data/run/pg12]:5120 pg12@testdb=#
新增列,查看数据字典
[local:/data/run/pg12]:5120 pg12@testdb=# ALTER TABLE t_drop ADD COLUMN c1 text DEFAULT md5( random()::text );ALTER TABLETime: 24483.254 ms (00:24.483)[local:/data/run/pg12]:5120 pg12@testdb=# select attrelid,attname,atttypid,attisdropped from pg_attribute where attrelid = 't_drop'::regclass; attrelid | attname | atttypid | attisdropped ----------+------------------------------+----------+-------------- 994249 | tableoid | 26 | f 994249 | cmax | 29 | f 994249 | xmax | 28 | f 994249 | cmin | 29 | f 994249 | xmin | 28 | f 994249 | ctid | 27 | f 994249 | id | 23 | f 994249 | ........pg.dropped.2........ | 0 | t 994249 | c1 | 25 | f(9 rows)Time: 1.067 ms[local:/data/run/pg12]:5120 pg12@testdb=#
到此,相信大家对"PostgreSQL中的删除列操作是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
数据
字典
空间
内容
学习
实用
更深
信息
兴趣
实用性
实际
操作简单
数据表
方法
更多
朋友
标记
网站
逻辑
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
昆山皇博软件开发有限公司
什么是动态星团数据库
雪豹小说软件开发
计算机网络技术组装与维护
服务器是那里
电子版数据库系统概述
织梦数据库如何迁移
昭通精益管理软件开发
网络安全法治的措施
office服务器错误怎么办
sd女佣优化数据库
质量网络技术服务大概费用
大数据网络技术就业方向
网络安全未来增速
数据库应用期末复习题2020
手机uu服务器数据怎么看
上海网络安全三级认证
steam的官方服务器在哪
主机开发和软件开发
数据库达到3NF
网络安全宣讲新闻
昆山管理软件开发记录
山东云诺软件开发有限公司
新加坡软件开发工作好找吗
国内主要网络安全网站
网络安全法建立健全什么机制
超变传奇红包版服务器是什么
软件开发工作的工作分解结构
网络安全教育绘画简单
计算机个人技能数据库