postgresql相关的重命名和数据库大小相关查询

postgresql有关的重名

-- 重命名数据库

-- 使用alter database修改数据库名的时候,要保证当前数据库没有活动的session连接
alter database test rename to test2;

SQL 错误 [55006]: ERROR: database "test" is being accessed by other users
  Detail: There is 1 other session using the database.
  
-- 关闭所有活动session
select pg_terminate_backend(pg_stat_activity.pid)
from pg_stat_activity
where datname='test' and pid<>pg_backend_pid();  

-- 使用update方式修改,但是即便可以运行成功,但是实际上没有修改,证明实际不可取
UPDATE pg_database SET datname = 'test' WHERE datname = 'test2';

postgres=# \c test2
FATAL:  database "test2" does not exist

-- 重命名模式
alter schema test rename to test2;

-- 重命名表名
alter table schema_name.tb_name rename to new_table_name;

-- 重命名字段
alter table schema_name.tb_name rename column col_name to new_col_name;

查询数据库大小

-- 查询单个数据库大小
select pg_size_pretty(pg_database_size('db_name'));

-- 查询单个表大小
select pg_size_pretty(pg_relation_size('tb_name'));

-- 查询单个表的总大小,包括该表的索引大小
select pg_size_pretty(pg_total_relation_size('tb_name'));

-- 查询索引大小
select pg_size_pretty(pg_relation_size('index_name'));

-- 查询单个表空间大小
select pg_size_pretty(pg_tablespace_size('pg_default'));

-- 查询所有数据库大小
select datname,pg_size_pretty(pg_database_size(datname));

-- 查询所有表大小
select relname,pg_size_pretty(pg_relation_size(relid));

-- 查询所有表的总大小,包括其索引大小
select relname,pg_size_pretty(pg_total_relation_size(relid));

猜你喜欢

转载自blog.csdn.net/weixin_44375561/article/details/121565243