greenplum schema

2023-03-24 00:00:00 数据库 专区 删除 信息 中表

greenplum schema
Schema是Database中逻辑组织object和data。

在同一Database中,不同schema的对象可以使用相同的名称。

例如:A schema 中表叫tab1, B schema中表也可以叫tab1. 但是在同一个schema中就会报错

=> SELECT * FROM myschema.mytable;
1
注意:如果sql中指定了schema名字的话,就查询指定schema,否则查询search path中配置参数。

------管理命令------

创建数据库 create database mydb;

切换数据库 \c dbname

[创建schema] => CREATE SCHEMA myschema;

[创建并设置owner] => CREATE SCHEMA myschema AUTHORIZATION username;

[查看当前schema] => SELECT current_schema();

[查看search path] => SHOW search_path;

[修改search path] => ALTER DATABASE mydatabase SET search_path TO myschema, public, pg_catalog;

[删除schema<必须是空schema,未包含任何对象>] => DROP SCHEMA myschema;

[删除schema及数据库中所有对象] => DROP SCHEMA myschema CASCADE;


------用户级schema------

public => GP默认安装,default schema

psql中切换schema set search_path to test_schema

查询一个库下面各Schema占用空间:

1. select pg_size_pretty(cast( sum(pg_relation_size( schemaname || '.' || tablename)) as bigint)), schemaname from pg_tables t inner join pg_namespace d on t.schemaname=d.nspname group by schemaname;
2. select schemaname, count(tablename), pg_size_pretty(cast(sum(pg_relation_size(schemaname||'.'||tablename)) as bigint))
as schema_size from pg_tables t inner join pg_namespace d on t.schemaname=d.nspname group by schemaname;
3. 查看schema磁盘使用量和配额
create schema s1;
set search_path to s1; //必须要设置,要不然建表时候找不到schema
create table a(i int);
select * from diskquota.show_fast_schema_quota_view;
注:建表之后才能看到磁盘配额
1
2
3
4
5
6
7
8
9
greenplum元数据信息

#1.元数据重要的表

1. pg_database:所有的数据库信息
2. pg_namespace:所有的schema信息
3. pg_class :所有的表信息
4. pg_attribute:所有的属性信息
5. pg_proc : 函数信息,包括自定义函数

以上都可以以select * from xxxx;去查看

强制删除数据库
在删除数据库的时候如果遇到一下报错:
ERROR: database “mydb” is being accessed by other users
DETAIL: There are 3 other sessions using the database.
需要执行以下命令:

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='mydb' AND pid<>pg_backend_pid();

然后再删除

drop DATABASE mydb;


本文来源:https://blog.csdn.net/qq_33783361/article/details/113364396

相关文章