首页 > 数据库 >openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间

openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间

时间:2023-09-09 19:32:15浏览次数:49  
标签:tablespace 管理 CREATE TABLESPACE 空间 64 openGauss superman

openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间

64.1 背景信息

通过使用表空间,管理员可以控制一个数据库安装的磁盘布局。这样有以下优点:

  • 如果初始化数据库所在的分区或者卷空间已满,又不能逻辑上扩展更多空间,可以在不同的分区上创建和使用表空间,直到系统重新配置空间。

  • 表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能。

    • 一个频繁使用的索引可以放在性能稳定且运算速度较快的磁盘上,比如一种固态设备。
    • 一个存储归档的数据,很少使用的或者对性能要求不高的表可以存储在一个运算速度较慢的磁盘上。
  • 管理员通过表空间可以设置占用的磁盘空间。用以在和其他数据共用分区的时候,防止表空间占用相同分区上的其他空间。

  • 表空间对应于一个文件系统目录,假定数据库节点数据目录/pg_location/mount1/path1是用户拥有读写权限的空目录。

    使用表空间配额管理会使性能有30%左右的影响,MAXSIZE指定每个数据库节点的配额大小,误差范围在500MB以内。请根据实际的情况确认是否需要设置表空间的最大值。

openGauss自带了两个表空间:pg_default和pg_global。

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

64.2 注意事项

在HCS(HUAWEI CLOUD Stack,华为云)等场景下一般不建议用户使用自定义的表空间。用户自定义表空间通常配合主存(即默认表空间所在的存储设备,如磁盘)以外的其它存储介质使用,以隔离不同业务可以使用的IO资源,而在HCS等场景下,存储设备都是采用标准化的配置,无其它可用的存储介质,自定义表空间使用不当不利于系统长稳运行以及影响整体性能,因此建议使用默认表空间即可。

64.3 操作步骤

64.3.1 创建表空间

  1. 执行如下命令创建用户superman。

    openGauss=# CREATE USER superman IDENTIFIED BY 'xxxxxxxxx';
    

    当结果显示为如下信息,则表示创建成功。

    CREATE ROLE
    
  2. 执行如下命令创建表空间。

    openGauss=# CREATE TABLESPACE superman_space RELATIVE LOCATION 'tablespace/tablespace_1';
    

    当结果显示为如下信息,则表示创建成功。

    CREATE TABLESPACE
    

    其中“superman_space”为新创建的表空间,“tablespace/tablespace_1”是用户拥有读写权限的空目录。

  3. 数据库系统管理员执行如下命令将“superman_space”表空间的访问权限赋予数据用户superman。

    openGauss=# GRANT CREATE ON TABLESPACE superman_space TO superman;
    

    当结果显示为如下信息,则表示赋予成功。

    GRANT
    

64.3.2 在表空间中创建对象

如果用户拥有表空间的CREATE权限,就可以在表空间上创建数据库对象,比如:表和索引等。

以创建表为例。

  • 方式1:执行如下命令在指定表空间创建表。

    openGauss=# CREATE TABLE foo(i int) TABLESPACE superman_space;
    

    当结果显示为如下信息,则表示创建成功。

    CREATE TABLE
    
  • 方式2:先使用set default_tablespace设置默认表空间,再创建表。

    openGauss=# SET default_tablespace = 'superman_space';
    SET
    openGauss=# CREATE TABLE foo2(i int);
    CREATE TABLE
    

    假设设置“superman_space”为默认表空间,然后创建表foo2。

64.3.3 查询表空间

  • 方式1:检查pg_tablespace系统表。如下命令可查到系统和用户定义的全部表空间。

    openGauss=# SELECT spcname FROM pg_tablespace;
    
  • 方式2:使用gsql程序的元命令查询表空间。

    openGauss=# \db
    

64.3.4 查询表空间使用率

  1. 查询表空间的当前使用情况。

    openGauss=# SELECT PG_TABLESPACE_SIZE('example');
    

    返回如下信息:

     pg_tablespace_size 
    --------------------
                2146304
    (1 row)
    

    其中2146304表示表空间的大小,单位为字节。

  2. 计算表空间使用率。

    表空间使用率=PG_TABLESPACE_SIZE/表空间所在目录的磁盘大小。

64.3.5 修改表空间

执行如下命令对表空间superman_space重命名为fspace。

openGauss=# ALTER TABLESPACE superman_space RENAME TO fspace;
ALTER TABLESPACE

64.3.6 删除表空间

img 说明:

用户必须是表空间的owner或者系统管理员才能删除表空间。

  1. 执行如下命令删除用户superman。

    openGauss=# DROP USER superman CASCADE;
    DROP ROLE
    
  2. 执行如下命令删除表foo和foo2。

    openGauss=# DROP TABLE foo;
    openGauss=# DROP TABLE foo2;
    

    当结果显示为如下信息,则表示删除成功。

    DROP TABLE
    
  3. 执行如下命令删除表空间fastpace。

    openGauss=# DROP TABLESPACE fastpace;
    DROP TABLESPACE
    

标签:tablespace,管理,CREATE,TABLESPACE,空间,64,openGauss,superman
From: https://blog.51cto.com/shuchaoyang/7420608

相关文章

  • 从零开始使用vue2+element搭建后台管理系统(前期准备)
    准备开始1.安装node(node-v查询版本号)(下载地址:https://nodejs.org/en/download/)2. 安装淘宝镜像 npminstall-gcnpm--registry=https://registry.npm.taobao.org3.安装webpack,以全局的方式安装 npminstallwebpack-g4.全局安装vue以及脚手架vue-cli npminst......
  • 【CF1364C】Ehab and Prefix MEXs(构造)
    题目大意:给出长度为\(n(1\len\le10^5)\)的数组\(a\),构造数组\(b\)使得\(a_i=MEX\{b_1,b_2,...,b_1\}\)首先考虑当\(b_1,b_2,...,b_n\)为什么数时,\(a_n=MEX\{b_1,b_2,...,b_n\}\)。然后再考虑当\(b_1,b_2,...,b_{n-1}\)为什么数时,\(a_{n-1}=MEX\{b_1,b_2,...,b_{n-1}\}\)。......
  • Linux环境编程-信号管理
    一、基本概念1、中断当进程接收到消息后中止当前正在进行进程,转而去执行其它任务,等其它任务执行结束后再返回刚刚中止的位置,可以继续往下运行,这种执行模式称为中断中断分为硬件中断、软件中断,硬件中断是由硬件设备引发的、软件中断是执行了中断指令引发2、信号信号是一种软件......
  • uniapp中的持久化,状态管理 Pinia
    Pinia是一个用于Vue.js的状态管理库,是Vue的存储库,它允许您跨组件提供了更简单、直观的API,适用于管理和共享应用程序的状态,Pinia和Vuex都是流行的Vue.js状态管理库,它们都有自己的优点和适用场景。下面是对Pinia和Vuex的简要比较:方便性:在方便性方面,Pinia提供了......
  • 【云原生】使用Docker部署openGauss5.0.0【自制镜像更安全】
    opengauss5.0.0基于docker的安装强烈建议大家使用我的方法进行部署,因为我们不能确定第三方的opengauss-docker镜像在制作的过程中是否增加了其他步骤,做出来的镜像是否为纯净版镜像只有自己从openGauss官网下载的安装包,自己进行制作镜像,才能保证100%是纯净版镜像,利害关系在此就不阐......
  • Linux环境编程-内存管理
    一、内存管理用户层STL  智能指针/容器自动分配、释放   调用C++C++  new/delete           调用CC   malloc/free       调用POSIX\LinuxPOSIX brk/sbrk         调用内核Linux ......
  • Linux环境编程-文件管理
    一、一切皆文件Linux/UNIX操作系统把所有的服务、设备、协议都抽象成文件的形式,提供了一套统一而简单的文件IO的系统调用,简称系统的文件IO也就是说在UNIX\Linux中任何对象都可以被当做是某种特殊的文件,都可以像访问文件一样,访问这些对象通过ls-l命令可以查看文件属性信息,其中......
  • 021-管理后台附件功能开发
    1.功能分析1.1.查询列表1.1.1.页面效果1.1.2.功能要求分页查询默认查询10条每页从第1页开始查询附件提供查询,删除操作点击上传按钮弹出上传附件页面搜索条件附件名称:支持模糊搜索点击搜索按钮是按照录入的搜索条件进行查询数据并渲染点击重置按钮的时候清空搜索条件,并重新渲......
  • SpringBoot框架实现一个简单的管理系统
    当然,我可以提供一个简单的示例代码,用SpringBoot框架实现一个简单的管理系统。以下是一个用户管理系统的示例代码:创建SpringBoot项目:使用SpringInitializr(https://start.spring.io/)创建一个新的SpringBoot项目,选择相应的依赖(如SpringWeb、SpringDataJPA、Thymeleaf等)。创建......
  • jenkins权限管理
    1,jenkins权限管理安装插件安装插件如下:Role-basedAuthorizationStrategy2,新版本的插件安装以后需要选择后才能在系统管理中看到3.选择以后能看到 4.编辑权限 ......