PostgreSQL中的删除列操作是什么
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"PostgreSQL中的删除列操作是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PostgreSQL中的删除列操作是什么"吧!创建
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
河南哪个大学有软件开发
网安维护网络安全
入股交友软件开发可行吗
dell服务器引导盘
军队网络安全法规
c 游戏服务器引擎
深信服数据库一体机
软件开发外包公司靠谱
服务器响应不安全怎么办
杭州苹果软件开发贵吗
ff14怎么送服务器
服务器连接异常下载失败怎么处理
聋哑人网络安全教育
小程序js 连接阿里云数据库
计算机网络技术应用ppt课件
学习网络安全视频的意义简短
正在等待夸桥服务器
大阪租房软件开发
车辆段多措并举推进网络安全
济宁erp软件开发
公司服务器日常管理制度
网站运维 服务器安全
网络安全防骗方法图解
vb编程如何访问数据库
2021年网络安全三季度财报
人工智能中的网络技术
互联网大会科技成果奖
软件开发项目的阶段性报告
计算机网络技术基础各章习题答案
上海常规软件开发定制哪个好