关于GaussDB

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

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

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

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

来源应该是这个:

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

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

GaussDB社区_华为云GaussDB_开发者社区_华为云华为云数据库GaussDB社区,带您免费体验GaussDB数据库服务https://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 # 查看系统表空间,会显示所有表空间的详细信息,包括名称、存储位置。

参考文档:ADM_TABLESPACES_云数据库 GaussDB_华为云ADM_TABLESPACES视图显示有关可用的表空间的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。ORA数据库与GaussDB数据库逻辑结构特性不一致。https://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%' 查看表空间对应的磁盘目录

四、 关于分区表和普通表

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

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

五、关于调用存储过程

语法格式:

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

比如:

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

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

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

参考文档:

成长地图_云数据库 GaussDB_华为云https://support.huaweicloud.com/gaussdb/index.html

六、什么是数据库的段segment

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

以下内容为AI生成:

  1. **一个数据库服务器可以包含多个数据库(Database)**:
  • 数据库服务器是指运行数据库管理系统的计算机或服务实例。它可以托管多个独立的数据库,每个数据库都是一个逻辑上独立的数据集合,拥有自己的配置、用户权限和数据文件。
  1. **每个数据库可以包含多个模式(Schema)**:
  • 模式是数据库内的逻辑容器,用于组织和隔离不同的数据对象(如表、视图、索引等)。通过使用不同的 schema,可以在同一个数据库中为不同用户或应用程序创建具有相同名称的对象而不发生冲突。
  1. **每个模式可以包含多个表(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**:数据库内部的逻辑分隔,帮助组织和隔离数据对象。

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

相关推荐
2501_933670792 小时前
2026秋招数据分析岗备考路线:SQL、BI、项目与面试题拆解
数据库
我要见SA姐15 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
xcLeigh5 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客5 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
我要见SA姐16 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
Nturmoils7 小时前
一份 KDMS 评估报告,怎样排出迁移先后顺序
数据库
这个DBA有点耶7 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
独泪了无痕7 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
码少女8 小时前
Linux--多路转接之select
java·服务器·数据库
梁辰兴8 小时前
软件工程:软件维护的副作用
数据库·软件工程·梁辰兴·控制方法·软件维护的副作用·副作用类型·副作用原因