【openGauss实战12】表空间管理

news2024/12/24 11:30:44

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及GP 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.表空间概述
    • 📣 2.表空间优点
    • 📣 3.默认表空间
    • 📣 4.表空间管理
      • ✨ 4.1 创建表空间
      • ✨ 4.2 删除表空间
      • ✨ 4.3 修改表空间名称
    • 📣 5.表空间运维

前言

本篇介绍了openGauss的表空间的日常管理及运维

📣 1.表空间概述

表空间是数据库的逻辑划分,所有的数据库对象都存放在指定的表空间中。
但主要存放的是表, 所以称作表空间。

对于openGauss数据库,表空间是一个目录,可以存在多个表空间,每个表空间所对应的目录存储的是其所包含的数据库的各种物理文件。openGauss的表空间这一特性和Oracle不一样,Oracle的表空间是一逻辑概念,Oracle表空间不是一个目录,其数据是存放于数据文件之上的,一个表空间可以对应着一个或多个物理的数据文件。
openGauss的表空间是一个目录,其仅起到物理隔离的作用,对于其管理功能更依赖于表空间所在的文件系统。

在这里插入图片描述

📣 2.表空间优点

1)如果初始化数据库所在的分区或者卷空间已满,又不能逻辑上扩展更多空间,可以在不同的分 区上创建和使用表空间,直到系统重新配置空间。
2)表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能。
3)如频繁使用的索引可以放在性能稳定且运算速度较快的磁盘上。
4)如存储归档的数据,很少使用的或者对性能要求不高的表可以存储在运算速度较慢的磁盘上。
5)表空间可以控制数据库数据占用的磁盘空间,当表空间所在磁盘的使用率达到90%时,数据库 将被设置为只读模式,当磁盘使用率降到90%以下时,数据库将恢复到读写模式。
6)表空间对应于一个文件系统目录,且用户需要拥有读写权限的空目录。

📣 3.默认表空间

在安装部署openGauss后,会创建两个默认的表空间,分别是pg_default和pg_global。

1)默认表空间pg_default:用来存储非共享系统表、用户表、用户表index、临时表、临时表index、内部临时表的默认表空间。对应存储目录为实例数据目录下的base目录。
2)共享表空间pg_global:用来存放共享系统表的表空间及系统字典表,对应存储目录为实例数据目录下的global目录。

[omm@opengauss ~]$ gsql -d postgres -p 15400
openGauss=# \db
      List of tablespaces
    Name    | Owner | Location
------------+-------+----------
 pg_default | omm   |
 pg_global  | omm   |
(2 rows)
openGauss=# select oid,* from pg_tablespace;
 oid  |  spcname   | spcowner | spcacl | spcoptions | spcmaxsize | relative
------+------------+----------+--------+------------+------------+----------
 1663 | pg_default |       10 |        |            |            | f
 1664 | pg_global  |       10 |        |            |            | f
(2 rows)

##默认表空间存放位置
[root@opengauss base]# pwd
/app/openGauss/install/data/dn/base
[root@opengauss base]# ls
1  15646  15651  16385  16394  16410  16411  16412  pgsql_tmp

[root@opengauss global]# ls
15055      15292      15300_fsm  15309      15358  15368_fsm  15376      15434      15539      15566      config_exec_params      pg_internal.init.92848
15055_fsm  15294      15300_vm   15310      15359  15368_vm   15376_fsm  15438      15540      15567      pg_control              pg_remain_segs
15055_vm   15295      15302      15311      15360  15370      15376_vm   15440      15559      15569      pg_control.backup
15057      15296      15303      15311_fsm  15361  15371      15378      15441      15561      15570      pg_dw_0
15058      15296_fsm  15305      15311_vm   15363  15372      15379      15449      15562      15647      pg_dw_ext_chunk
15135      15296_vm   15306      15313      15365  15372_fsm  15400      15468      15563      15647_fsm  pg_dw_meta
15137      15298      15307      15315      15366  15372_vm   15402      15468_fsm  15563_fsm  15647_vm   pg_dw_single
15138      15299      15307_fsm  15316      15367  15374      15431      15468_vm   15563_vm   15649      pg_filenode.map
15290      15300      15307_vm   15356      15368  15375      15433      15537      15565      15650      pg_filenode.map.backup

在这里插入图片描述

📣 4.表空间管理

✨ 4.1 创建表空间

1)执行如下命令创建用户jeames
openGauss=# drop user IF EXISTS jeames;
openGauss=# CREATE USER jeames IDENTIFIED BY ‘abcd@123456’;
如果要授予user1数据库系统的SYSADMIN权限,请执行以下命令
ALTER USER jeames SYSADMIN;

2)执行如下命令创建表空间
openGauss=# CREATE TABLESPACE users RELATIVE LOCATION ‘tablespace/users’;
其中users为新创建的表空间,tablespace/users是用户拥有读写权限的空目录。
#查看系统有哪些表空间
select oid,* from pg_tablespace 或 \db
#通过 -f 后跟脚本名称创建表空间
gsql -d postgres -p 15400 -f /home/omm/tb01.sql
#绝对路径创建
openGauss=# CREATE TABLESPACE tb01 location ‘/app/openGauss/install/data/tbs_tb01’;
注意:tablespace cannot be created under data directory

在这里插入图片描述

3)数据库系统管理员执行如下命令将users表空间的访问权限赋予数据用户jeames
openGauss=# GRANT CREATE ON TABLESPACE users TO jeames;
说明:如果用户拥有表空间的CREATE权限,就可以在表空间上创建数据库对象,比如:表和索引等。

4)表空间中创建对象
#新建库默认表空间
CREATE DATABASE tb1 WITH TABLESPACE = tb01;
CREATE DATABASE tb2 WITH TABLESPACE = tb01;
查看数据库所在的表空间,可以看到一个表空间可以有多个数据库
openGauss=# select oid,datname from pg_database;
openGauss=# select datname,dattablespace,spcname from pg_database d, pg_tablespace t where d.dattablespace=t.oid;
在这里插入图片描述
#指定表空间创建表
openGauss=# CREATE TABLE foo(i int) TABLESPACE tb01;
openGauss=# select schemaname,tablename,tablespace from pg_catalog.pg_tables;
使用gsql程序的元命令查询表空间
openGauss=# \db

#先使用set default_tablespace设置默认表空间,再创建表
openGauss=# CREATE TABLESPACE tb02 location ‘/app/openGauss/install/data/tbs_tb02’;
openGauss=# SET default_tablespace = ‘tb02’;
openGauss=# CREATE TABLE foo2(i int);
说明:表空间所对应的目录名称并不一定是create tablespace tablespace_name中tablespace_name中的名称,
而是创建表空间语句location之后最后面的文件名称,比如
CREATE TABLESPACE tb01 location ‘/opt/gaussdb/tablespace/tbs_tb01’; 该表空间对应的目录名称是tbs_tb01而非tb01

✨ 4.2 删除表空间

删除表空间,需要先删除表空间的对应的表等数据信息,否则无法删除表空间。
执行drop tablespace tablespace_name后,仅仅是将表空间下的文件给清空了,但表空间目录还存在。
openGauss=# drop tablespace tb02;

✨ 4.3 修改表空间名称

openGauss=# alter tablespace tb01 rename to tb02;
说明:修改表空间名称后,仍可正常查询原表空间上的表数据信息,修改表空间名称,其对对应的目录名称并未随之改变

📣 5.表空间运维

-- 通过\db 元命令查询表空间
openGauss=# \db

-- 查询单个表空间大小
openGauss=# SELECT PG_TABLESPACE_SIZE('tb02');
-- 查询所有表空间大小
openGauss=# select spcname, pg_size_pretty(pg_tablespace_size(spcname)) as size from pg_tablespace;
openGauss=# select spcname, pg_size_pretty(pg_tablespace_size(oid)) as size from pg_tablespace;

-- 查询单个表大小
select pg_size_pretty(pg_relation_size('mytab')) as size; 
-- 查询所有表大小
select relname, pg_size_pretty(pg_relation_size(relid)) as size from pg_stat_user_tables;
-- 查询单个表的总大小,包括该表的索引大小
select pg_size_pretty(pg_total_relation_size('tab')) as size;
-- 查询所有表的总大小,包括其索引大小
select relname, pg_size_pretty(pg_total_relation_size(relid)) as size from pg_stat_user_tables;

--查询数据库大小
openGauss=# select pg_size_pretty(pg_database_size('postgres')) as size;
openGauss=# select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;

-- 询表空间oid信息
openGauss=# select oid,* from pg_tablespace;

- 查询表空间物理位置信息
openGauss=# select * from pg_tablespace_location((select oid from pg_tablespace where spcname='tb01'));

--建表帮助命令
openGauss=# \h create tablespace
MAXSIZE ‘space_size’:指定表空间在单个数据库节点上的最大值。

--设置表空间限额的语法
ALTER TABLESPACE tablespace_name RESIZE MAXSIZE { UNLIMITED | 'space_size'};

--创建用户lvzz2,并更改ds_location1的所有者为lvzz2
create role lvzz2 identified by 'lvzz#123456';
alter tablespace ds_location1 owner to lvzz2;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/485113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【总线】IIC学习笔记

【总线】IIC学习笔记 参考链接IIC总线介绍IIC总线时序1.空闲信号2. 启动信号与停止信号3.数据的有效性4.应答信号5.七位地址传输 IIC读写过程(AT24C02举例)IIC读过程IIC写过程 正点原子IIC驱动问题1、IIC停止信号问题2、IIC-AT24C02的器件地址发送的疑惑…

OJ搭建配置 功能速查手册

服务器配置 腾讯云 2H4G 5M 60GB 轻量应用服务器 承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛。 系统镜像选 Ubuntu 22.04 LTS。 用户管理 一、批量导入(从方便管理角度建议以 学生姓名 作为 用户名 &am…

网络安全之黄金票据,白银票据

前言:今天来给大家讲讲黄金票据和白银票据Kerberos认证#金票Golden ticket# 原理#伪造金票的场景和所需条件#利用方式#银票SILVER TICKET# 原理#伪造银票所需条件#金票和银票的区别# 获取的权限不同#认证流程不同#加密方式不同# 前言:今天来给大家讲讲黄…

Unity 3D 学习笔记(1)

文章目录 1.Unity 3D 概述2.Unity的安装过程3.Unity 3D 的项目管理4.Unity 3D 中的场景5.Unity 3D 的界面组成 1.Unity 3D 概述 Unity 3D简介:Unity 3D是虚拟现实行业中使用率较高的一款开发引擎,由Unity Technology公司开发。通过Unity,开发…

手动实现 Spring 底层机制【初始化 IOC容器+依赖注入+BeanPostProcessor 机制+AOP】

目录 手动实现 Spring 底层机制【初始化 IOC容器依赖注入BeanPostProcessor 机制AOP】 前面我们实际上已经用代码简单实现了 代码演示使用框架 创建一个maven项目 创建UserAction类 创建UserDao类 创建UserService类 创建beans.xml 说明 创建AppMain类 运行效果 如图…

《汇编语言》- 读书笔记 - 第2章-寄存器

《汇编语言》- 读书笔记 - 第2章-寄存器 2.0 8086CPU 寄存器段地址:偏移地址 2.1 通用寄存器2.2 字在寄存器中的存储2.3 几条汇编指令表2.1汇编指令举例表2.2 程序段中指令的执行情况之一问题 2.1表2.3 程序段中指令的执行情况之二问题 2.2 2.4 物理地址2.5 16位结构的CPU2.6 8…

数据埋点1

文章目录 1 什么是数据埋点2 为什么需要数据埋点3 数据埋点能采集哪些用户数据4 数据埋点的分类及方式5 主流的数据上报技术5.1 客户端上报5.2 服务端获取 1 什么是数据埋点 互联网的海量数据是通过数据埋点技术采集用户行为数据而产生的,用户行为数据采集及上报流…

我又不当程序员还要学Python吗?人工智能AI的出现我知道,我错了

Python(可读音:派森) 时代要淘汰你,连招呼都不会打! 这句话近些年我们常在媒体上听到,有点残酷,但却又很现实。 最近,人工智能AI技术火爆全网,而且它所表现出来的“超…

浅谈Spring中的BeanFactory与FactoryBean

前言 理解FactoryBean是非常非常有必要的,因为在Spring中FactoryBean最为典型的一个应用就是用来创建AOP的代理对象,不仅如此,而且对理解Mybatis核心源码也非常有帮助!如果甘愿crud,做个快乐的码农,那我就哦…

Springcloud--docker快速入门

认识docker docker相关操作 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…

『Linux』第九讲:Linux多线程详解(三)_ 线程互斥 | 线程同步

「前言」文章是关于Linux多线程方面的知识,上一篇是 Linux多线程详解(二),今天这篇是 Linux多线程详解(三),内容大致是线程互斥与线程同步,讲解下面开始! 「归属专栏」Li…

剑指 Offer 54. 二叉搜索树的第k大节点【37】

难度等级:容易 上一篇算法: 226. 翻转二叉树【58】 力扣此题地址: 剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣(Leetcode) 1.题目:剑指 Offer 54. 二叉搜索树的第k大节点 给定一棵二叉搜索树&#xff0c…

springboot第15集:MyBatis分页

我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 是的,输出 SQL 可以帮助我们更好地理解代码的执行流程和结果。在控制台输出 SQL 可以让我们看到实际执行的 SQL 语句,这样就能够更…

武忠祥老师每日一题||定积分基础训练(一)

若积分区间相同,最常用的思想: 若 f ( x ) > g ( x ) , 则 ∫ a b f ( x ) > ∫ a b g ( x ) 若f(x)>g(x),则\int_{a}^{b}f(x)>\int_{a}^{b}g(x) 若f(x)>g(x),则∫ab​f(x)>∫ab​g(x) 但 是 往 往 等 号 只 是 在 有 限 个 点 成…

Java实现添加文字水印、图片水印功能

Java实现添加水印功能 添加水印Java 2D API介绍绘制文字水印绘制图片水印循环添加文字水印 添加水印 为图片添加水印的主要作用是保护图片版权,防止图片被未经授权的人使用或传播。为图片添加水印是一种常用的图片处理技术。在Java 中可以使用JDK自带的 Graphics2D …

快速上手Django(九) -Django下载文件、Django上传文件、Django实现excel导入导出

文章目录 快速上手Django(九) -django 上传文件request.FILES,下载文件一、Django下载文件1. Django下载文件方案和思路2. HttpResponse、StreamingHttpResponse和FileResponse区别和选择StreamingHttpResponse和FileResponse对象的对比和选择使用HttpResponse使用S…

浏览器安全之XSS跨站脚本

基本概念 跨站脚本(Cross-Site Scripting,XSS)是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的。 攻击者利用网站漏洞把恶意的脚本代码(通常包括HTML代码和客户端Javas…

采用.Net Core技术框架开发的B/S版区域检验管理系统(云LIS)

实验室信息管理系统云LIS源码 SaaS模式运维管理系统 云LIS系统源码是一款全面的实验室信息管理系统源码,其主要功能包括样本管理、检测项目管理、质控管理、报告管理、数据分析、两癌筛查等多个方面。具有独立的配套SaaS模式运维管理系统,支持远程运维&…

AtCoder Beginner Contest 300——A-G题讲解

蒟蒻来讲题,还望大家喜。若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 300这场比赛的A-G题! A - N-choice question 原题 Problem Statement Given integers A A A and…

数据埋点2

文章目录 1 数据埋点流程2 六个步骤实现数据埋点设计2.1 确认事件与变量2.2 明确事件的触发时机2.3 明确事件的上报机制2.4 设计数据表结构2.5 统一字段命名规范2.6 明确优先级 3 以电商购物成交转化为例实现数据埋点设计 作为数据分析师的你,是否和我一样经常会被业…