当前位置: 首页 > article >正文

GBase 8c 表空间规划和对象迁移

GBase 8c 表空间规划和对象迁移我最近看 GBase 8c 资料时越来越强烈的一个感觉是很多现场不是不会建表空间而是把表空间用得太晚、太散、太随意。真正落到现场时最常见的现象通常不是“不会执行CREATE TABLESPACE”而是业务已经跑了一段时间默认表空间所在磁盘开始吃紧热点表、归档表、临时排序、历史索引全堆在一起最后才想到把对象往别的路径挪。这个时候事情就不再是“加一个目录”这么简单了而是变成了对象盘点、变更窗口、I/O 冲击、回退方案一起上。我自己理解下来GBase 8c 里的表空间更像是存储布局的控制点。它能解决“对象落到哪里”的问题但解决不了“规划混乱”本身。要是前期没想清楚后面迁移对象时不仅麻烦还容易把影响面低估。我实际排查时先看的不是建不建表空间很多人一上来就问默认表空间满了要不要赶紧新建一个。但我最近整理下来觉得先别急着建先把下面几件事想清楚这次是容量问题还是冷热数据混放问题。需要移动的是表、索引还是临时文件压力。这批对象是后续持续新增还是只需要一次性搬迁。当前环境是不是适合自定义表空间而不是继续沿用默认表空间。先把这四个问题分开后面的动作才不会乱。现场现象我更倾向于先判断什么常见误区默认路径空间告急是单个大对象膨胀还是很多对象混放直接新建表空间但不盘点对象查询高峰时 I/O 抖动明显是热点索引和归档数据抢盘还是排序临时文件压力只搬表不搬索引新系统即将上线是不是应该在建库建表阶段就定好落盘位置等上线后再慢慢挪云化或标准化部署环境是否真的适合使用自定义表空间默认把“多表空间”当最佳实践从落地角度看表空间最怕的不是没建而是只建不用规则、只迁不做分层。我对 GBase 8c 表空间边界的理解GBase 8c 的数据最终由 DN 节点落盘表空间本质上是文件系统里的目录用来承载数据库对象的数据文件。系统自带的两个表空间是pg_default和pg_global。我自己更关注的是这两个内置表空间的边界pg_default默认承载非共享系统表、用户表、用户表索引、临时表、临时表索引、内部临时表。pg_global承载共享系统表空间不是业务对象随便放的地方。我最近看资料时发现很多人把“表空间”理解成逻辑库的分组但实际上它更偏物理存储布局。数据库、模式、表、索引是逻辑对象表空间解决的是这些对象最终落在哪个目录、哪类介质上。对象类型我一般怎么理解它和表空间的关系现场建议数据库可以关联默认表空间但不是拿来替代对象级规划的库级默认只做兜底不做精细治理表表数据只能属于一个表空间大表、历史表、归档表适合单独规划索引索引是独立对象别默认认为会和表一起迁热点索引要单独盘点临时对象/临时文件和会话行为、排序/哈希压力强相关需要单独观察不要混着看系统共享对象走pg_global不建议碰业务规划这一点我特别想强调迁表不等于迁完了。很多现场真正占 I/O 的可能反而是索引和临时文件。哪些场景适合自定义表空间哪些场景我反而会克制一点GBase 8c 文档里对表空间的定位很清楚核心还是控制磁盘布局、隔离不同对象的存储位置。但我自己更倾向于把它用在下面几种场景场景我更推荐的做法原因热点交易表和历史归档表混在一个路径分开规划业务表空间容量和 I/O 行为差异太大热点索引需要更稳定的介质索引与表分开规划真实瓶颈常常先出现在索引读写原路径已经接近容量上限给后续新增对象切到新表空间比全量搬迁更稳临时排序和业务对象争抢磁盘评估单独的临时表空间策略能减少高峰期互相影响但也不是所有环境都值得自定义表空间。我最近整理资料时注意到在一些标准化云场景里文档本身就不建议用户随意使用自定义表空间。原因也不复杂底层存储往往已经标准化额外拆表空间不一定带来收益反而容易增加运维复杂度。所以我个人更倾向于这个判断顺序能用默认表空间解决的不急着拆。必须做物理隔离的再做自定义表空间。一旦做了就把对象范围、命名规范、迁移顺序一次想清楚。我更愿意采用的落地步骤1先准备目录而不是先写 SQL表空间对应的是目录目录条件不满足后面 SQL 再漂亮也没用。我自己一般会先在数据库节点把路径准备好再进入数据库层动作。#!/bin/bashforpin/data1/gbase/ts_hot\/data2/gbase/ts_hist\/data3/gbase/ts_tempdomkdir-p$pchown-Rgbase:gbase$pchmod700$pdone# 做变更前先确认目录为空forpin/data1/gbase/ts_hot /data2/gbase/ts_hist /data3/gbase/ts_tempdoecho$pls-la$pdone这里我一般会特别检查三件事检查项为什么要先看我自己的判断方式目录是否已存在且为空表空间创建依赖已有空目录先ls -la别直接上 SQL目录属主属组是否正确避免后面出现权限问题统一给数据库运行用户路径是否为稳定存储表空间丢失会直接影响实例工作不放移动介质、不放临时挂载点2创建表空间时先按用途命名我个人不太喜欢space1、space2这种命名。真到了半年后排查现场谁都记不住哪个是热表、哪个是历史、哪个是临时。CREATETABLESPACEts_hot LOCATION/data1/gbase/ts_hot;CREATETABLESPACEts_hist LOCATION/data2/gbase/ts_hist;CREATETABLESPACEts_temp LOCATION/data3/gbase/ts_temp;-- 按需授权给业务角色GRANTCREATEONTABLESPACEts_hotTOapp_rw;GRANTCREATEONTABLESPACEts_histTOapp_rw;命名我一般会直接带语义ts_hot高频交易对象ts_hist历史归档对象ts_temp临时对象或临时文件策略验证ts_idx_hot热点索引单独落盘时再建3新增对象尽量在创建阶段就落对地方我自己更倾向于把“对象落盘位置”前移到建表脚本而不是等上线后再改。尤其是大表和大索引后迁移的代价通常更高。CREATETABLEacct.bill_detail(bill_idbigintprimarykey,acct_novarchar(32)notnull,trade_datedatenotnull,trade_amountnumeric(18,2)notnull,statusvarchar(16)notnull,created_timetimestampnotnulldefaultcurrent_timestamp)TABLESPACEts_hot;CREATEINDEXidx_bill_detail_01ONacct.bill_detail(trade_date,acct_no)TABLESPACEts_hot;如果某一批对象在一个会话里统一创建我一般会显式设置默认表空间避免脚本里漏写SETdefault_tablespacets_hist;CREATETABLEacct.bill_detail_2024m12(likeacct.bill_detail including defaults);CREATEINDEXidx_bill_detail_2024m12_01ONacct.bill_detail_2024m12(trade_date,acct_no);而临时对象相关的策略我更愿意单独验证不和业务表迁移混在一个窗口里SETtemp_tablespacests_temp;CREATETEMPTABLEtmp_bill_checkASSELECT*FROMacct.bill_detailWHEREtrade_datedate2024-12-01;真正开始迁移前我一定会先做对象盘点很多人做对象迁移时最大的问题不是不会写ALTER而是不知道自己到底要迁什么。我一般先把目标模式里的表和索引盘出来至少先看清楚当前对象落在哪个表空间。SELECTn.nspnameASschema_name,c.relnameASobject_name,c.relkindASobject_type,COALESCE(t.spcname,pg_default)AStablespace_nameFROMpg_class cJOINpg_namespace nONn.oidc.relnamespaceLEFTJOINpg_tablespace tONt.oidc.reltablespaceWHEREn.nspnameacctANDc.relkindIN(r,i)ORDERBYn.nspname,c.relkind,c.relname;如果只是快速查看现有表空间我一般会直接用这两种方式SELECTspcnameFROMpg_tablespace;\db上面这个顺序我自己很少省。因为只要一跳过盘点后面就很容易出现两个问题表挪走了索引还在原路径。当前对象其实不大真正大的对象根本没被纳入本次变更。我更喜欢“先生成 SQL再分批执行”在现场里最怕的是手敲几十条ALTER TABLE ... SET TABLESPACE。我自己的习惯是先生成再复核再分批跑。迁移一批历史表SELECTformat(ALTER TABLE %I.%I SET TABLESPACE ts_hist;,schemaname,tablename)FROMpg_tablesWHEREschemanameacctANDtablenameLIKEbill_detail_2024%;迁移对应索引SELECTformat(ALTER INDEX %I.%I SET TABLESPACE ts_hist;,schemaname,indexname)FROMpg_indexesWHEREschemanameacctANDtablenameLIKEbill_detail_2024%;我个人更倾向于分三步走步骤我会怎么做这样做的原因第一步先生成迁移 SQL 清单防止漏对象、漏索引第二步先跑小批量对象验证窗口先看锁等待、I/O 波动、耗时第三步再分批处理大对象把风险拆小便于回退这里还有一个我实际排查时经常遇到的坑表迁完以后不代表业务路径就一定改善。如果热点访问主要落在索引或者高峰期压力来自临时排序那单纯挪表效果通常不会特别明显。这些坑我自己会提前写进变更单里坑一只看表不看索引这是最常见的。业务反馈“已经迁表了磁盘还是忙”最后一查大索引还在老路径上。坑二把表空间当容量回收工具表空间能重新布局对象但它不是空间回收工具。如果问题根源是历史垃圾、对象膨胀、无序增长只迁路径不治理对象后面还会再满。坑三高峰期直接迁大对象我自己一般不会在业务高峰做大对象迁移。即使 SQL 看起来简单底层也涉及真实数据文件移动这种动作最好还是留给明确的变更窗口。坑四路径规划没有命名规则没有命名规范的表空间时间一长就会变成“知道有、没人敢动”的状态。后面无论巡检、扩容还是迁移成本都会升高。坑五忘了删除前提是表空间必须为空这类问题通常出现在回滚或者试验环境清理时。表空间里还有对象DROP TABLESPACE就不会让你轻松过去。常见坑现场表现我更建议的做法只迁表不迁索引迁移后 I/O 改善不明显表和索引分开盘点、分开执行把表空间当扩容补丁过一段时间又满同时做对象分层和容量治理高峰期迁大对象业务抖动、窗口不可控小批量预演后再正式执行路径命名混乱后续无人敢维护建立统一命名和用途说明清理不彻底删除表空间失败先确认对象完全迁出我自己更认可的一套思路如果把这件事再压缩一下我现在会把 GBase 8c 表空间治理理解成三句话第一表空间解决的是物理落盘不是逻辑建模。第二新对象尽量创建时就放对位置别把所有问题留到后迁移。第三迁移动作一定是对象盘点、表索引分治、分批执行而不是一条命令糊过去。我最近整理下来觉得GBase 8c 的表空间能力并不难难的是把它用在真正合适的地方。该用的时候要把目录、对象、会话参数、执行窗口一起想清楚不该用的时候也别为了“看起来更专业”硬拆出一堆表空间。真正能让现场更稳的往往不是多建几个目录而是从一开始就把对象怎么落、后面怎么迁、出了问题怎么退提前想明白。参考资料[1] GBase 8c 文档介绍 https://www.gbase.cn/docs/gbase-8c/%E6%AC%A2%E8%BF%8E/ [2] 基本概念 | GBASE南大通用 https://www.gbase.cn/docs/gbase-8c/03%20%E5%BC%80%E5%8F%91%E8%80%85%E6%8C%87%E5%8D%97/%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5 [3] 数据库使用 | GBASE南大通用 https://www.gbase.cn/docs/gbase-8c/03%20%E5%BC%80%E5%8F%91%E8%80%85%E6%8C%87%E5%8D%97/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BD%BF%E7%94%A8 [4] gsql | GBASE南大通用 https://www.gbase.cn/docs/gbase-8c/04%20%E5%B7%A5%E5%85%B7%E5%8F%82%E8%80%83/01%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B7%A5%E5%85%B7/gsql [5] GBase 8c 教程十五表空间 https://www.gbase.cn/community/post/1821

相关文章:

GBase 8c 表空间规划和对象迁移

GBase 8c 表空间规划和对象迁移 我最近看 GBase 8c 资料时,越来越强烈的一个感觉是:很多现场不是不会建表空间,而是把表空间用得太晚、太散、太随意。 真正落到现场时,最常见的现象通常不是“不会执行 CREATE TABLESPACE”&#x…...

7个高级技巧深度掌握DS4Windows手柄映射引擎

7个高级技巧深度掌握DS4Windows手柄映射引擎 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows DS4Windows作为专业的游戏手柄映射解决方案,通过先进的XInput模拟技术将PlayStati…...

2026年通用C盘快速清理工具哪个好?一键清理C盘垃圾的免费软件推荐

无论你用的是最新的Windows 11,还是经典的Windows 10,C盘空间不足都是个跨不过去的“坎”。当电脑提示空间不足,运行速度明显变慢时,你最需要的是一款能“快速”上手的“傻瓜式”清理工具。今天,我们就来横向对比几款市…...

如何用Python解析LRMX文件:干部管理系统开发实战(附完整代码)

Python解析LRMX文件实战:构建高效干部管理系统 在组织人事管理领域,LRMX文件作为标准数据交换格式,承载着干部任免审批的核心信息。本文将深入探讨如何利用Python技术栈实现LRMX文件的自动化处理,构建一个功能完整的干部管理系统。…...

dy自动化采集数据滑动验证码绕过实战指南

1. 理解dy滑动验证码的运作机制 当你用脚本快速刷dy视频时,经常会遇到那个烦人的滑块验证码。这其实是平台防止机器人滥用的重要防线。我刚开始做自动化采集时,每次遇到这个滑块都会头皮发麻——程序卡住不动,数据采集被迫中断。后来经过反复…...

自动化工具赋能工作流:如何用KeymouseGo提升效率与降低错误率

自动化工具赋能工作流:如何用KeymouseGo提升效率与降低错误率 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 在…...

储能系统海量时序数据边缘侧清洗:基于微服务架构的死区过滤与数据语境化实现

摘要: 针对新能源储能现场底层总线高频轮询(如 50ms 采集间隔)所引发的海量数据洪流,传统的数据全量透传模型不仅会迅速耗尽 4G/5G 流量配额,更会造成云端时序数据库的写入雪崩。本文深度分享一种在具有充沛边缘算力且…...

别再死记硬背了!用‘打电话’、‘寄快递’、‘发长信’来秒懂网络交换三兄弟

别再死记硬背了!用‘打电话’、‘寄快递’、‘发长信’来秒懂网络交换三兄弟 刚接触计算机网络时,那些晦涩的专业术语总让人望而生畏。记得我第一次看到"电路交换"、"分组交换"这些概念时,满脑子都是问号——直到有一天&…...

查重和AI率双高?毕业之家的“双降”引擎真能救命!

根据2026年最新实测数据与主流技术社区(如CSDN)的综合评测,当前AI论文写作工具排行榜中,PaperRed 与 毕业之家 稳居中文论文写作领域的前两名。以下是基于权威榜单整理的主流工具排名概览及两款头部产品的核心功能详解&#xff1a…...

从话题数据到3D应用:用Orbbec DaBai DCL和ROS2快速搭建你的第一个点云处理流水线

从话题数据到3D应用:用Orbbec DaBai DCL和ROS2快速搭建你的第一个点云处理流水线 当你第一次看到Orbbec DaBai DCL相机输出的点云数据在RViz2中跳动时,那种将物理世界转化为数字模型的震撼感,是任何文档描述都无法替代的。作为一款支持RGB-D、…...

ipmitool实战指南:从基础命令到高级服务器管理技巧

1. 初识ipmitool:服务器管理的瑞士军刀 第一次接触ipmitool是在五年前的一个深夜,当时机房有台服务器突然失去响应,运维同事却在外地出差。正当大家束手无策时,老张轻描淡写地说了句"用IPMI啊",然后在笔记本…...

车辆纵向建模避坑指南:如何正确处理空气阻力与轮胎摩擦的耦合效应

车辆纵向建模避坑指南:如何正确处理空气阻力与轮胎摩擦的耦合效应 在自动驾驶仿真和车辆控制算法开发中,精确的纵向动力学建模是确保虚拟测试与实车表现一致性的关键。许多工程师都遇到过这样的困境:仿真环境下调参完美的模型,在…...

终极指南:QLVideo让macOS视频预览支持200+格式,Finder管理效率提升300%

终极指南:QLVideo让macOS视频预览支持200格式,Finder管理效率提升300% 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. …...

5步轻松打造随身游戏库:Playnite便携版终极配置指南

5步轻松打造随身游戏库:Playnite便携版终极配置指南 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https…...

从模型到文档:基于快马ai实现solidworks设计数据自动下游处理

在机械设计领域,SolidWorks作为主流的三维建模工具,经常需要将设计数据转化为下游生产文档。最近我在一个设备开发项目中,就遇到了如何高效处理装配体数据的问题。传统手工整理零件清单、计算材料用量、编写采购单和装配说明的过程既耗时又容…...

G-Helper终极指南:如何免费优化华硕笔记本性能,告别Armoury Crate臃肿体验

G-Helper终极指南:如何免费优化华硕笔记本性能,告别Armoury Crate臃肿体验 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across …...

Winhance-zh_CN:如何免费让你的Windows系统焕然一新

Winhance-zh_CN:如何免费让你的Windows系统焕然一新 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_C…...

ARMv8-A架构革命——超越64位寻址的三大范式转移

该文章同步至公众号OneChan 开篇:回答上篇进阶思考 在上一篇的结尾,我们留下了三个问题,现在让我们逐一探讨: 1. 从A53到A55再到A510,ARM的小核设计哲学如何演变? Cortex-A53 (2014):定义了“…...

2025版等级保护测评报告模板:风险导向与合规深化的实践指南

1. 2025版等级保护测评报告模板的核心变革 如果你最近接触过等级保护测评工作,一定会注意到2025版报告模板带来的显著变化。这个版本最大的特点就是从过去的"得分导向"彻底转向了"风险导向"。在实际工作中,我发现很多企业安全负责人…...

LayerDivider终极指南:AI智能图像分层工具完全解析

LayerDivider终极指南:AI智能图像分层工具完全解析 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾面对复杂的插画作品,需…...

别再只杀进程了!挖矿病毒XMRig的完整清除与溯源指南(附config.json钱包地址分析)

深度对抗XMRig挖矿病毒:从清除到溯源的实战手册 发现任务管理器里反复出现的xmrig.exe进程?别急着再次点击"结束任务"——这就像用创可贴处理骨折,治标不治本。作为处理过数百起挖矿事件的安全工程师,我总结了一套从内…...

EPSON RX8010SJ RTC与Nordic TWI实战:I2C通讯时序详解与避坑指南

EPSON RX8010SJ RTC与Nordic TWI实战:I2C通讯时序详解与避坑指南 在嵌入式系统中,实时时钟(RTC)模块是许多应用的核心组件之一。EPSON RX8010SJ作为一款低功耗、高精度的RTC芯片,广泛应用于物联网设备、可穿戴设备和工…...

终极指南:如何在Windows上安装和使用FlipIt翻页时钟屏保

终极指南:如何在Windows上安装和使用FlipIt翻页时钟屏保 【免费下载链接】FlipIt Flip Clock screensaver 项目地址: https://gitcode.com/gh_mirrors/fl/FlipIt 想要为你的Windows电脑增添一抹复古优雅的时间艺术吗?FlipIt翻页时钟屏保正是你需要…...

芯片设计Signoff前必看!数字后端工程师的5大验证避坑清单(含CTS实战案例)

芯片设计Signoff前必看!数字后端工程师的5大验证避坑清单(含CTS实战案例) 在数字后端设计的最后冲刺阶段,每个工程师都经历过那种如履薄冰的体验——明明所有检查项都已通过,却在流片前夜发现某个角落的时序违例。这种…...

突破安卓HTTPS抓包困境:Xposed+JustTrustMe框架实战指南

1. 为什么HTTPS抓包在安卓上这么难? 最近几年做安全测试的朋友应该深有体会,安卓应用的HTTPS抓包越来越难搞了。我刚开始接触这块时也踩了不少坑,明明在浏览器里能轻松抓到的HTTPS请求,到了APP里就死活抓不到。后来才发现&#xf…...

实战演练:三种常见办公文档加密破解技巧(ZIP密码/ZIP伪加密/DOC密码)

1. ZIP密码破解实战:从入门到精通 工作中经常会遇到这种情况:同事发来的压缩包设置了密码,但对方忘记告诉你密码是什么;或者多年前自己加密的压缩包,现在怎么也打不开了。这时候就需要掌握一些ZIP密码破解的技巧。 我遇…...

Pikachu靶场实战:File Inclusion漏洞从入门到精通(附防御代码)

Pikachu靶场实战:File Inclusion漏洞攻防全解析 在网络安全领域,文件包含漏洞(File Inclusion)一直是Web应用渗透测试中的高频发现项。这种看似简单的漏洞类型,却能导致服务器敏感信息泄露甚至完全沦陷。Pikachu靶场作…...

Harbor集成Trivy实现镜像安全扫描:从安装到离线环境配置全攻略

1. 为什么需要镜像安全扫描? 最近在帮客户部署容器平台时遇到一个典型问题:测试环境频繁出现应用崩溃,排查后发现是基础镜像中的某个高危漏洞导致的。这让我意识到,镜像安全扫描不是可选项,而是现代DevOps流程中的必选…...

手把手教你用PassFab for Office 8.5.1找回遗忘的Word/Excel密码(保姆级图文教程)

办公文档密码遗忘急救指南:PassFab for Office全流程实战解析 你是否经历过这样的场景:周一早晨准备修改季度报表时,突然发现去年设置的Excel密码怎么试都不对;或是毕业论文答辩前夜,重要参考文献的Word文档因密码错误…...

从DCM到NII:医学影像数据处理中,为什么我劝你放弃保存回DCM格式?

从DCM到NII:医学影像数据处理中格式选择的深度实践指南 医学影像数据处理的流程中,文件格式的选择往往被忽视,却直接影响着后续分析的效率与兼容性。许多研究者习惯性地将处理后的数据保存回DCM格式,殊不知这可能在后续流程中埋下…...