关于GaussDB

一、GaussDB的层级关系 ,关于schemas的定位,到底是个什么,其实就可以理解为一个文件夹

数据库服务器 --> databases --> schemas --> tables

d7396c131fde4e878a77ec11a9ff1139.png

schema类似于文件夹,一个数据库database里面可以有多个文件夹,每个文件夹里面可以都有一个表叫abc,就不会冲突。如果没有这个schema这种文件夹,那么相当于所有的表都直接在数据库的根目录下,那么就不能有两个名称一样的表了。所以这个schema就是类似于文件夹,A文件夹里面可以有个表叫abc,B文件夹里面也可以有个表叫abc

schema也类似于namespace,就跟C盘D盘这种盘符一样,主要是为了隔离,进行精细化管理,而且相互隔离的空间内,可以有重复的资源,比如重复的表名称

来源应该是这个:

9455a1fbd2ea4cb6923ccdbd6053405f.png

用DBeaver连接上GaussDB,真实效果如图,可清楚判断层级关系

381ba0d5d5c14dd49afa4039c3e2402d.png

f03585f7006a41f095742bdb5c12a804.png

0bfbcee685c544c6893303e1b24df99b.png

9f50831fc73c4169a249b799b6c1face.png

8401062a0031438d9a262b1af4f8eb16.png

0328665bd2104e90b435540f508cdee7.png

3c710e22446b4b6d960247e3016a939a.png

常用概念_云数据库 GaussDB_华为云GaussDB的最小管理单元是实例,一个实例代表了一个独立运行的数据库。用户可以在控制台创建和管理GaussDB实例。实例的状态、规格、存储类型和版本,请参考实例说明。GaussDB目前支持V2.0-8.201版本。GaussDB支持分布式版和集中式版实例。分布式版能够支撑较大的数据量,且提供了横向扩展的能力,可以通过扩容的方式提高实例的icon-default.png?t=O83Ahttps://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_006.html

fc67deaf0b9341e5892dfdf7e2266c72.png

GaussDB社区_华为云GaussDB_开发者社区_华为云华为云数据库GaussDB社区,带您免费体验GaussDB数据库服务icon-default.png?t=O83Ahttps://bbs.huaweicloud.com/contents/sql/gaussdb-community.html

二、 关于表空间

表空间对应文件系统的一个目录,

关键字是TABLESPACE,一般在指定的表空间下创建表。

三、 GaussDB常用的一些sql语句

SELECT VERSION()   # 查看数据库系统版本

SELECT CURRENT_USER  # 查看当前用户

SELECT USER # 查看当前用户

SELECT MAX(ID) FROM <tablename>  # 查看表的最大ID

SELECT COUNT(1) FROM <tablename>  # 查看表的行数

select * from pg_database  # 查询系统表

SELECT TABLESPACE_NAME, TABLE_NAME, NUM_ROWS FROM adm_tables WHERE OWNER = '<owner_name>' ORDER BY NUM_ROWS DESC LIMIT 10  # 统计行数最高的10个表

count 和 num_rows都是查看表的行数,前者更精确,但是需要全表扫描,比较慢,对数据库负担比较重;后者是从adm_tables系统表中查看元数据,结果可能不准确,是因为是analyze定期更新的,但是不扫描全表,速度快,数据库负担小。

SELECT * FROM adm_tablespaces  # 查看系统表空间,会显示所有表空间的详细信息,包括名称、存储位置。

1. select version()
2. select current_user
3. select user
4. SELECT * FROM adm_tablespaces;
5. select max(ID) from tablename
6. select count from tablename
7. Select table_name, num_rows, from adm_tables where owner = 'owner_name' and table_name = 'xxx' or table_name = 'xxx'
8. select tablespace_name, table_name, num_rows from adm_tables where owner = 'xxx' order by num_rows desc limit 20
9. select table_name, tablespace_name, from adm_tables where owner = 'xxx' and table_name = 'xxx'
10. select * from adm_tablespaces where tablespace_name = 'xxx'
11. select tablespace_name, total_size/1024/1024/1024 AS "TOTAL (G)", used_size/1024/1024/1024  AS "USED (G)", round(used_size * 100 / total_size, 2) ||'%' used_percent from adm_tablespaces  WHERE TABLESPACE_NAME LIKE 'xxx' order by 2desc; 查询指定表空间的使用情况,总量和使用率
12. select * from adm_data_files where tablespace_name like 'xxx'
13. alter tablespace your_tablespace_name add maxsize 10G
14. select owner, segment,_name, table_name, max (segment_type), round(sum(bytes)/1024/1024/1024, 2) as size_G from adm_segments where owner in ('xxx') group by owner, segment_name, table_name, order by sum (bytes) desc limit 20
16. select partitioned, * from adm_tables where table_name = 'xxx'

ADM开头的系统视图,都在华为云:

路径(GaussDB官方文档-->开发指南-->开发指南(分布式_V2.0-8.x)-->系统表和系统视图-->系统视图)

ADM_IND_PARTITIONS_云数据库 GaussDB_华为云ADM_IND_PARTITIONS视图显示数据库中所有一级分区表Local索引的索引分区信息。数据库中每个一级分区表的Local索引的索引分区(如果存在的话)都会在ADM_IND_PARTITIONS里有一行记录。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。icon-default.png?t=O83Ahttps://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0990.html

6895f06ccb6b43988b40c3f80aefa6a4.png

8177a172a3134625b8d7b12504c7c14c.png

具体adm_开头的系统视图:

参考文档:ADM_TABLESPACES_云数据库 GaussDB_华为云ADM_TABLESPACES视图显示有关可用的表空间的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。ORA数据库与GaussDB数据库逻辑结构特性不一致。icon-default.png?t=O83Ahttps://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-1162.html

SELECT TABLE_NAME, TABLESPACE_NAME FRON ADM_TABLES WHERE OWNER = '<ownername>' AND TABLE_NAME LIKE '<tablename>'  # 查询一个库中的表的表名称和表空间的对应关系

SELECT TABLESPACE_NAME, TOTAL_SIZE/1024/1024/1024 AS "TOTAL(G)", USED_SIZE/1024/1024/1024 AS "USED(G)", ROUND(USERD_SIZE * 100 / TOTAL_SIZE, 2) USED_PERCENT FROM ADM_TABLESPACES WHERE TABLESPACE_NAME LIKE '<tablespacename>' ORDER BY 2 DESC;  # 查询指定表空间的使用情况

如何查看表空间对应的磁盘目录?

SELECT spcname, pg_tablespace_location FROM pg_tablespace;  # 这一条如果没有查到结果

SELECT * FROM pg_tablespace  # 就用这个查询,select * from  DBA_DATA_FILES  WHERE TABLESPACE_NAME LIKE 'xxx%'

SELECT * FROM ADM_DATA_FILES WHERE TABLESPACE_NAME LIKE 'xxx%'  查看表空间对应的磁盘目录

四、 关于分区表和普通表

普通表,所有数据都存在一个物理文件中

分区表,数据被分割成多个部分,每个部分存储在不同的物理文件或子表中,这些部分称为分区

a6618260f1be4221829daf662e9c2cf2.png

五、关于调用存储过程

语法格式:

CALL [ schema.|package. ] { func_name | procedure_name } ( param_expr );

比如:

CALL schema_name.collect_index_stats('用户',‘索引名’,15);

调用一个schema下面的存储过程,这个存储过程的字面意思是收集索引信息。

这个存储过程的概念,其实就是类似于一个加强版的函数,函数一般返回值是一个,存储过程的返回值一般是一套。

参考文档:

成长地图_云数据库 GaussDB_华为云icon-default.png?t=O83Ahttps://support.huaweicloud.com/gaussdb/index.html

六、什么是数据库的段segment

        segment是表空间管理的逻辑单位,每个索引占两个segment,分别用于管理叶子节点和非叶子节点。

434e351343604530ad3b8281e8fa1ba7.png

67dc36e0c9994730b0d457ffbd304bec.png

GaussDB采用了一种称为“段存储”的机制,将数据表的存储分割成多个段,每个段包含一部分表数据。这种机制有助于提高数据存储的效率和查询性能。

七、“||”操作符在SQL中用于连接两个字符串,常用||'%',给前面的数字加个百分号%

八、 参考资料:

      官网地址:openGauss官方网站 | openGauss主页 | openGauss社区官网   

      官网上的教学视频地址:

     轻松上手openGauss之SQL语言(上)_哔哩哔哩_bilibili

6bb6d4d2428e495b980099435622ac88.png

图片来源(上图): README.md · openGauss/openGauss-server - Gitee.com

c102632071214019948e68173c6e8c4f.png

                        图片来源(上图):GaussDB SQL查询语句执行过程解析

afded589c9ba4e238bda89e49a4f50f6.png

图片来源(上图):GaussDB SQL查询语句执行过程解析

d3acada211de4f8ba9ea9eae7877a287.png

    资料来源(上图):GaussDB SQL查询语句执行过程解析

2b5f99e991a84eafba581d6ece0ca032.png

     资料来源(上图):GaussDB SQL查询语句执行过程解析

九、参考书籍:

HCIA-opengauss 学习指南,isbn9787115610263,是华为公司出的。因为opengauss数据库是华为发布的,而这本书是考相关认证的相当于官方教材,所以应该还行

以下内容为AI生成:

1. **一个数据库服务器可以包含多个数据库(Database)**:

   - 数据库服务器是指运行数据库管理系统的计算机或服务实例。它可以托管多个独立的数据库,每个数据库都是一个逻辑上独立的数据集合,拥有自己的配置、用户权限和数据文件。

2. **每个数据库可以包含多个模式(Schema)**:

   - 模式是数据库内的逻辑容器,用于组织和隔离不同的数据对象(如表、视图、索引等)。通过使用不同的 schema,可以在同一个数据库中为不同用户或应用程序创建具有相同名称的对象而不发生冲突。

3. **每个模式可以包含多个表(Table)以及其他数据库对象**:

   - 表是最常见的数据库对象之一,用于存储实际的数据记录。除了表之外,schema 还可以包含视图、索引、触发器、函数等其他类型的数据库对象。

### 简化的层次结构示意图

```

数据库服务器

├── 数据库 (Database) 1

│   ├── 模式 (Schema) A

│   │   ├── 表 Table 1

│   │   ├── 表 Table 2

│   │   └── ...

│   ├── 模式 (Schema) B

│   │   ├── 表 Table 3

│   │   └── ...

│   └── ...

├── 数据库 (Database) 2

│   ├── 模式 (Schema) C

│   │   ├── 表 Table 4

│   │   └── ...

│   └── ...

└── ...

```

### 示例 SQL 操作

#### 创建数据库

```sql

CREATE DATABASE db1;

CREATE DATABASE db2;

```

#### 在特定数据库中创建 schema

```sql

-- 切换到 db1

\c db1;

-- 在 db1 中创建两个 schema

CREATE SCHEMA finance;

CREATE SCHEMA hr;

```

#### 在 schema 中创建表

```sql

-- 在 finance schema 中创建一张表

CREATE TABLE finance.expenses (

    id SERIAL PRIMARY KEY,

    amount NUMERIC NOT NULL,

    description TEXT

);

-- 在 hr schema 中创建另一张表

CREATE TABLE hr.employees (

    id SERIAL PRIMARY KEY,

    name TEXT NOT NULL,

    position TEXT

);

```

### 总结

- **数据库服务器**:负责管理和提供对多个数据库的访问。

- **数据库**:逻辑上独立的数据集合,每个数据库都有自己的配置和安全设置。

- **schema**:数据库内部的逻辑分隔,帮助组织和隔离数据对象。

- **表和其他对象**:存储实际数据或定义数据操作规则的具体实体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值