计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
更新时间:2022-07-29 GMT+08:00

Schema空间管控

背景信息

GaussDB(DWS)存储资源管理上提供了Schema级别的空间管控能力,一方面可以实现单实例上的空间管控,避免数据库只读和磁盘满的情况出现;另一方面将空间管控和用户、队列解耦,实现了空间管控和权限的分离,降低用户使用空间管控的难度。

通过创建Schema时指定存储空间的大小实现对存储资源的管理,仅限制永久表存储空间(PREM SPACE)。Schema存储空间管理支持对表数据的存储空间管理,当一个Schema存在空间限制时,在业务执行过程中,如果该Schema下的表数据之和超过空间限制,则会导致业务出错。

前提条件

  • 存储空间控制功能enable_perm_space已设置为“on”。
  • 负载管理控制功能use_workload_manager已设置为“on”。

操作步骤

  1. 创建Schema“schema1”,设置其永久表空间限额为100G。

    1
    CREATE SCHEMA schema1 WITH PERM SPACE '100G';
    

  2. 修改Schema“schema1”永久表空间限额不受限制。

    1
    ALTER SCHEMA schema1 WITH PERM SPACE 'unlimited';
    

  3. 查看Schema“schema1”永久表空间限额是否已经设置。

    1
    2
    3
    4
    5
    SELECT * FROM PG_NAMESPACE WHERE NSPNAME = 'schema1';
     nspname | nspowner | nsptimeline | nspacl | permspace | usedspace
    ---------+----------+-------------+--------+-----------+-----------
     schema1 |       10 |           0 |        |        -1 |         0
    (1 row)
    

  • Schema空间信息是单实例的存储空间信息,CN/DN实例各自单独计算,相互不影响,可以更加有效的防止作业倾斜场景。
  • 执行作业使用空间超过Schema空间限额时,会对所执行的作业执行cancel操作,并会在pg_log目录下的日志文件中记录如下信息:"out of schema's perm space limit"。
  • unlogged table比较特殊,在max_query_retry_times大于0,即sql出错重试功能打开时,被认为是普通表,使用的空间记录在Schema永久表空间(PERM SPACE)下;在max_query_retry_times等于0,即sql出错重试功能关闭时,被认为是临时表,使用的空间不记录在Schema永久表空间(PEMP SPACE)下。如果使用unlogged table期间,切换了max_query_retry_times,按照上述判断,会导致切换前后unlogged table被判断为临时表和普通表的结果不一致,对应表在增删数据的情况下,对应schema上的永久数据空间变化也会出现异常情况,与实际物理空间有偏差。如果在unlogged table使用过程中,发生主备切换,unlogged table数据会丢失,导致对应schema上空间与实际物理空间存在丢失数据量的偏差。
  • PG_TOTAL_SCHEMA_INFO视图中统计的Schema使用空间与磁盘实际使用空间可能存在一定的误差(±5%左右),用户可通过执行select pgxc_wlm_readjust_schema_space() 函数来进行修正。修正函数不可重入,重入会导致修正结果不准确,在执行该修正函数过程中,如果在表插入数据,可能会出现统计不够准确的情况。
  • 列存表的CUDESC、CUDESC_INDEX、DELTA、CUDESC_PART、CUDESC_PART_INDEX都是辅助表,这些辅助表的空间会被记录到CSTORE Schema空间中;列存表的CBTREE索引存储空间大小能正常记录到主表队里的Schema上,但PSORT索引比较特殊,其存储空间大小仍然会被记录到CSTORE Schema空间中。而TOAST表和TOAST索引,其空间会被记录到PG_TOAST Schema空间中。
  • 表空间Tablespace中的表,其存储空间会被记录到该表所在的Schema上。
  • Schema空间管控将会忽略template0和template1两个模板库,对这两个模板库中Schema不会进行管控。
  • 扩容缩容场景下,数据重分布之后,Schema空间统计值会有偏差,需要调用校准函数来重新校准。
  • 修改表的分布列场景下,Schema空间统计值会有偏差,需要调用校准函数来重新校准。
  • VACUUM FULL/REINDEX表的过程中,如果主DN故障发生主备切换,Schema空间统计值会有偏差,需要调用校准函数来重新校准。
  • 创建临时表时,会同步创建临时Schema,这些临时Schema的名称类似于pg_temp_*和pg_toast_temp_*,临时Schema的空间不会被管控所限制,并且临时Schema信息不在PG_TOTAL_SCHEMA_INFO视图中展示。
  • GaussDB(DWS) 8.1.0.3之前版本升级到8.1.0.3及之后版本,PG_TOTAL_SCHEMA_INFO中统计的PERM SPACE信息未计算升级前已使用的空间大小,升级完成后,可通过执行select pgxc_wlm_readjust_schema_space() 函数来进行空间统计。
  • GaussDB(DWS)提供了查询集群Schema空间信息的视图PGXC_TOTAL_SCHEMA_INFO与PGXC_TOTAL_SCHEMA_INFO_ANALYZE,其中,PGXC_TOTAL_SCHEMA_INFO视图提供了集群所有实例上对应Schema的空间信息,PGXC_TOTAL_SCHEMA_INFO_ANALYZE视图对集群所有实例的Schema空间信息做了汇总分析,提供了集群总值、平均值、倾斜率、最大值、最小值以及最大最小实例名等信息。逻辑集群下,上述两个视图将会提供所有逻辑集群下的Schema空间信息和分析结果,如果只关注个别逻辑集群,可以使用GaussDB(DWS)提供的函数PGXC_WLM_GET_SCHEMA_SPACE('lccluster1')和PGXC_WLM_ANALYZE_SCHEMA_SPACE('lccluster1')来获取逻辑集群lccluster1下的Schema空间信息。

查看Schema的空间信息

select * from pg_namespace;
 nspname            | nspowner | nsptimeline |         nspacl          | permspace | usedspace
--------------------+----------+-------------+-------------------------+-----------+-----------
 public             |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 dbms_redact        |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 schema1            |       10 |           0 |                         |        -1 |         0
 dbms_random        |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 pg_toast           |       10 |           0 |                         |        -1 |   2326528
 testt              |    28726 |           0 |                         |        -1 |      8192
 dbms_om            |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 dbms_job           |       10 |           0 | {lys1=UC/lys1,=UC/lys1} |        -1 |         0
 sys                |       10 |           0 |                         |        -1 |         0
 information_schema |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |    294912
 utl_file           |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 utl_raw            |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 dbms_output        |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 dbms_sql           |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 dbms_lob           |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |         0
 cstore             |       10 |           0 |                         |        -1 |    696320
 user1              |    16390 |           0 |                         |  22405120 |      8192
 pg_catalog         |       10 |           0 | {lys1=UC/lys1,=U/lys1}  |        -1 |  24903680
(18 rows)

select * from pg_total_schema_info;
 schemaid |     schemaname     | databaseid | databasename | usedspace | permspace
----------+--------------------+------------+--------------+-----------+-----------
       11 | pg_catalog         |      16389 | test         |         0 |        -1
       99 | pg_toast           |      16389 | test         |         0 |        -1
      100 | cstore             |      16389 | test         |         0 |        -1
     2200 | public             |      15095 | gaussdb     |         0 |        -1
     2200 | public             |      16389 | test         |         0 |        -1
     4230 | dbms_redact        |      15095 | gaussdb     |         0 |        -1
     3987 | dbms_om            |      15095 | gaussdb     |         0 |        -1
     3988 | dbms_job           |      15095 | gaussdb     |         0 |        -1
     3987 | dbms_om            |      16389 | test         |         0 |        -1
     3988 | dbms_job           |      16389 | test         |         0 |        -1
     4230 | dbms_redact        |      16389 | test         |         0 |        -1
    11693 | sys                |      15095 | gaussdb     |         0 |        -1
    28714 | test1              |      15095 | gaussdb     |         0 |        -1
    28715 | test3              |      15095 | gaussdb     |         0 |        -1
    28728 | redisuser          |      15095 | gaussdb     |         0 |        -1
    28730 | testt              |      15095 | gaussdb     |      8192 |        -1
    28766 | redisuser1         |      15095 | gaussdb     |         0 |        -1
    28798 | schema1            |      15095 | gaussdb     |         0 |        -1
    11693 | sys                |      16389 | test         |         0 |        -1
    14147 | information_schema |      15095 | gaussdb     |    294912 |        -1
    14490 | utl_file           |      15095 | gaussdb     |         0 |        -1
    14515 | utl_raw            |      15095 | gaussdb     |         0 |        -1
    14508 | dbms_output        |      15095 | gaussdb     |         0 |        -1
    14512 | dbms_random        |      15095 | gaussdb     |         0 |        -1
    14520 | dbms_sql           |      15095 | gaussdb     |         0 |        -1
    14547 | dbms_lob           |      15095 | gaussdb     |         0 |        -1
    14147 | information_schema |      16389 | test         |         0 |        -1
    14490 | utl_file           |      16389 | test         |         0 |        -1
    14508 | dbms_output        |      16389 | test         |         0 |        -1
    14515 | utl_raw            |      16389 | test         |         0 |        -1
    14512 | dbms_random        |      16389 | test         |         0 |        -1
    14520 | dbms_sql           |      16389 | test         |         0 |        -1
    14547 | dbms_lob           |      16389 | test         |         0 |        -1
       11 | pg_catalog         |      15095 | gaussdb     |  22405120 |  22405120
       99 | pg_toast           |      15095 | gaussdb     |   2326528 |        -1
      100 | cstore             |      15095 | gaussdb     |    696320 |        -1
    16392 | user1              |      15095 | gaussdb     |      8192 |        -1
(37 rows)

select * from  pgxc_total_schema_info;
     schemaname     | schemaid | databasename | databaseid |   nodename   |  nodegroup   | usedspace | permspace
--------------------+----------+--------------+------------+--------------+--------------+-----------+-----------
 pg_catalog         |       11 | test1        |      16384 | datanode1    | installation |   9469952 |        -1
 public             |     2200 | gaussdb     |      15253 | datanode1    | installation |  25280512 |        -1
 pg_toast           |       99 | test1        |      16384 | datanode1    | installation |   1859584 |        -1
 cstore             |      100 | test1        |      16384 | datanode1    | installation |         0 |        -1
 data_redis         |    18106 | gaussdb     |      15253 | datanode1    | installation |    655360 |        -1
 data_redis         |    18116 | test1        |      16384 | datanode1    | installation |         0 |        -1
 public             |     2200 | test1        |      16384 | datanode1    | installation |     16384 |        -1
 dbms_om            |     3987 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 dbms_job           |     3988 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 dbms_om            |     3987 | test1        |      16384 | datanode1    | installation |         0 |        -1
 dbms_job           |     3988 | test1        |      16384 | datanode1    | installation |         0 |        -1
 sys                |    11693 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 sys                |    11693 | test1        |      16384 | datanode1    | installation |         0 |        -1
 utl_file           |    14644 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 utl_raw            |    14669 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 dbms_sql           |    14674 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 dbms_output        |    14662 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 dbms_random        |    14666 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 dbms_lob           |    14701 | gaussdb     |      15253 | datanode1    | installation |         0 |        -1
 information_schema |    14300 | gaussdb     |      15253 | datanode1    | installation |    294912 |        -1
 information_schema |    14300 | test1        |      16384 | datanode1    | installation |    294912 |        -1
 utl_file           |    14644 | test1        |      16384 | datanode1    | installation |         0 |        -1
 dbms_output        |    14662 | test1        |      16384 | datanode1    | installation |         0 |        -1
 dbms_random        |    14666 | test1        |      16384 | datanode1    | installation |         0 |        -1
 utl_raw            |    14669 | test1        |      16384 | datanode1    | installation |         0 |        -1
 dbms_sql           |    14674 | test1        |      16384 | datanode1    | installation |         0 |        -1
 dbms_lob           |    14701 | test1        |      16384 | datanode1    | installation |         0 |        -1
 pg_catalog         |       11 | gaussdb     |      15253 | datanode1    | installation |  13017088 |        -1
 redisuser          |    16387 | gaussdb     |      15253 | datanode1    | installation |    630784 |        -1
 pg_toast           |       99 | gaussdb     |      15253 | datanode1    | installation |   3080192 |        -1
 cstore             |      100 | gaussdb     |      15253 | datanode1    | installation |   2408448 |        -1
 pg_catalog         |       11 | test1        |      16384 | datanode2    | installation |   9469952 |        -1
 public             |     2200 | gaussdb     |      15253 | datanode2    | installation |  25214976 |        -1
 pg_toast           |       99 | test1        |      16384 | datanode2    | installation |   1859584 |        -1
 cstore             |      100 | test1        |      16384 | datanode2    | installation |         0 |        -1
 data_redis         |    18106 | gaussdb     |      15253 | datanode2    | installation |    655360 |        -1
 data_redis         |    18116 | test1        |      16384 | datanode2    | installation |         0 |        -1
 public             |     2200 | test1        |      16384 | datanode2    | installation |     16384 |        -1
 dbms_om            |     3987 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 dbms_job           |     3988 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 dbms_om            |     3987 | test1        |      16384 | datanode2    | installation |         0 |        -1
 dbms_job           |     3988 | test1        |      16384 | datanode2    | installation |         0 |        -1
 sys                |    11693 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 sys                |    11693 | test1        |      16384 | datanode2    | installation |         0 |        -1
 utl_file           |    14644 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 utl_raw            |    14669 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 dbms_sql           |    14674 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 dbms_output        |    14662 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 dbms_random        |    14666 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 dbms_lob           |    14701 | gaussdb     |      15253 | datanode2    | installation |         0 |        -1
 information_schema |    14300 | gaussdb     |      15253 | datanode2    | installation |    294912 |        -1
 information_schema |    14300 | test1        |      16384 | datanode2    | installation |    294912 |        -1
 utl_file           |    14644 | test1        |      16384 | datanode2    | installation |         0 |        -1
 dbms_output        |    14662 | test1        |      16384 | datanode2    | installation |         0 |        -1
 dbms_random        |    14666 | test1        |      16384 | datanode2    | installation |         0 |        -1

select * from  pgxc_total_schema_info_analyze;
     schemaname     | databasename |  nodegroup   | total_value | avg_value | skew_percent |                  extend_info
--------------------+--------------+--------------+-------------+-----------+--------------+-----------------------------------------------
 pg_catalog         | test1        | installation |    56819712 |   9469952 |            0 | min:9469952 datanode1,max:9469952 datanode1
 public             | gaussdb     | installation |   150495232 |  25082538 |            0 | min:24903680 datanode6,max:25280512 datanode1
 pg_toast           | test1        | installation |    11157504 |   1859584 |            0 | min:1859584 datanode1,max:1859584 datanode1
 cstore             | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 data_redis         | gaussdb     | installation |     1966080 |    327680 |           50 | min:0 datanode4,max:655360 datanode1
 data_redis         | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 public             | test1        | installation |       98304 |     16384 |            0 | min:16384 datanode1,max:16384 datanode1
 dbms_om            | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_job           | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_om            | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_job           | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 sys                | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 sys                | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 utl_file           | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 utl_raw            | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_sql           | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_output        | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_random        | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_lob           | gaussdb     | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 information_schema | gaussdb     | installation |     1769472 |    294912 |            0 | min:294912 datanode1,max:294912 datanode1
 information_schema | test1        | installation |     1769472 |    294912 |            0 | min:294912 datanode1,max:294912 datanode1
 utl_file           | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_output        | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_random        | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 utl_raw            | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_sql           | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 dbms_lob           | test1        | installation |           0 |         0 |            0 | min:0 datanode1,max:0 datanode1
 pg_catalog         | gaussdb     | installation |    75210752 |  12535125 |            3 | min:12091392 datanode4,max:13017088 datanode1
 redisuser          | gaussdb     | installation |     1884160 |    314026 |           50 | min:16384 datanode4,max:630784 datanode1
 pg_toast           | gaussdb     | installation |    17154048 |   2859008 |            7 | min:2637824 datanode4,max:3080192 datanode1
 cstore             | gaussdb     | installation |    15294464 |   2549077 |            5 | min:2408448 datanode1,max:2703360 datanode6
(31 rows)

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情