暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

openClaw 龙虾太火爆,我却抛弃它而体验海量 Vastbase 数据库

329

大家好,我是JiekeXu,江湖人称“强哥”,青学会MOP技术社区主席,荣获Oracle ACE Pro称号,OpenTenBase ACE,金仓社区最具价值倡导者KVA,崖山最具价值专家YVP,IvorySQL开源社区专家顾问委员会成员,KWDB社区MVP,墨天轮MVP,墨天轮连续多年度“墨力之星”,拥有Oracle OCP/OCM认证,MySQL 5.7/8.0 OCP认证以及金仓KCA、KCP、KCM、KCSM证书,TiDB PCTA/PCTP证书、PCA、OBCA、OGCA等众多国产数据库认证证书,欢迎关注我的微信公众号“JiekeXu DBA之路”,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

国产数据库 Vastbase G100 单机体验

目 录

前 言 一、下载软件 二、环境准备 1.硬件要求 2.操作系统配置 3.可选配置 4.rpm 依赖安装 5.创建用户和组 6.创建目录 7.修改资源限制 三、安装流程详解 1.交互式安装(推荐新手) 2.静默安装(批量部署) 3.脚本自动化安装 4.其他方式安装 5.卸载软件 四、简单管理使用示例 1.vsql 命令行简单管理数据库 2.其他常用命令 3.监控工具集成 五、核心特性实战 1.行列混合存储测试 2.向量检索 3.Ustore引擎优势 六、高频报错解决方案 1.内存不足启动失败 2.License 许可证过期 参考链接

前 言

最近一两个月 openClaw 龙虾实在是太火爆了,如果见面不聊“养龙虾”都感觉不是一个时代的人了,龙虾虽好但消耗的 “token” 以及带来的安全问题不容忽视,生产环境要慎之又慎,网上有句话说的挺好,现在的“token”堪比黄金(虽然目前金价在暴跌),但目前我还是持观望态度,今天打算人肉体验一款企业级国产数据库 Vastbase G100

Vastbase G100 数据库是海量数据开发的企业级关系型数据库,在 PostgreSQL 基础特性上增加了大量 Oracle 兼容特性和自主研发的向量检索引擎,并进行了大幅度的安全增强,同时整合 GIS/流计算等一系列专业应用领域的企业级功能;近期了解到海量数据库 Vastbase G100 已在官方网站上开放下载试用,2023 年 Vastbase G100 3.0 发布,实现了资源池化和一写多读的全新架构,推出了超融合兼容引擎和面向时序场景的时序引擎;2023 年底和 2024 年 9 月份,Vastbase G100 V2.2 和 V3.0 均成功通过工信部安全可靠测评,拿到了信创数据库的门票,今天打算来体验一番。

一、下载软件

https://www.vastdata.com.cn/down

选择合适的 CPU 类型进行下载,这里我们选择 “V3.0.8PSU4" 这个版本,点击下图”下载软件“,填写姓名、手机号、邮箱等个人信息即可立马下载,如果没有官方正版 License 则试用版可以免费使用 90 天,功能不受影响。

企业微信截图_1773390179979.png

image20260320110237066.png

二、环境准备

1.硬件要求

  • 生产环境:最低配置 8c/12G/存储磁盘200G,推荐配置 16c/128G/存储磁盘500G

  • 开发测试环境:2c/8G/ SAS 存储磁盘100G

  • 快速检查命令

    # 查看CPU/内存 lscpu | grep -E "CPU\(s\)|Model name" free -h | grep "Mem" df -h cat /etc/os-release --若为麒麟操作系统,可使用 nkvers 命令查看其小版本号(SP1、SP2、SP3)

image20260320144856537.png

image20260320145141796.png

2.操作系统配置

  • RedHat 7.6 系统必选配置项优化
配置项 说明
防火墙配置 若未关闭防火墙,可能导致数据库无法正常使用。
关闭透明大页 开启透明大页可能会对数据库性能产生负面影响。
时区配置 若操作系统时区非中国时区,则数据库日志显示时间和实际不一致。
IPC参数配置 未设置RemoveIPC=no无法通过安装脚本的显式校验,则阻塞安装。
内核参数配置 此配置与数据库安装成功后是否能启动有很大关联关系,建议用户参考和实际情况进行配置。
SELinux配置 可设置临时关闭或修改配置文件永久关闭(永久关闭应重启操作系统生效)。

使用 root 账号进行如下优化设置:

# 防火墙配置 firewall-cmd --state systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service # 关闭透明大页 echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub --查看引导方式,如果为 BIOS [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS ## BIOS 引导 grub2-mkconfig -o /boot/grub2/grub.cfg ## UEFI 引导 grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg # 时区设置 timedatectl --输出为 "Time zone: Asia/Shanghai (CST, +0800)" 即可 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # IPC参数配置 echo 'RemoveIPC=no' >> /etc/systemd/logind.conf echo 'RemoveIPC=no' >> /usr/lib/systemd/system/systemd-logind.service systemctl daemon-reload systemctl restart systemd-logind loginctl show-session | grep RemoveIPC systemctl show systemd-logind | grep RemoveIPC # 内核参数调优 # 物理内存(KB) OS_MEM=$(awk '/MemTotal/{print $2}' /proc/meminfo) # 获取系统页面大小,用于计算内存总量 pagesize=$(getconf PAGE_SIZE) ((SHMALL = (OS_MEM - 1) * 1024 / pagesize)) ((SHMMAX = OS_MEM * 1024 - 10)) # 如果 SHMALL 小于 2097152,则将其设为 2097152 ((SHMALL < 2097152)) && shmall=2097152 # 如果 SHMMAX 小于 4294967295,则将其设为 4294967295 ((shmmax < 4294967295)) && shmmax=4294967295 echo $OS_MEM echo $SHMALL echo $SHMMAX cat >> /etc/sysctl.conf <<EOF fs.aio-max-nr=1048576 fs.file-max= 76724600 kernel.sem = 4096 2097152000 4096 512000 kernel.shmall = 8194737 # pages, 80% MEM or higher kernel.shmmax = 33565646838 # bytes, 50% MEM or higher kernel.shmmin = 819200 net.core.netdev_max_backlog = 10000 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 4194304 net.core.somaxconn = 4096 net.ipv4.tcp_fin_timeout = 5 vm.dirty_background_bytes = 409600000 vm.dirty_expire_centisecs = 3000 vm.dirty_ratio = 80 vm.dirty_writeback_centisecs = 50 vm.overcommit_memory = 0 vm.swappiness = 0 net.ipv4.ip_local_port_range = 40000 65535 fs.nr_open = 20480000 EOF sysctl -p # SELinux 配置 getenforce setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config sestatus

3.可选配置

关闭 swap 交换空间: 为了保障数据库的访问性能,避免把数据库的缓冲区内存淘汰到磁盘上。 如果服务器内存比较小,内存过载时,可打开 swap 交换内存保障正常运行。

swapoff -a

设置网卡 MTU 值:将各数据库节点和交换机的网卡 MTU 值(最大传输单元)设置为相同大小(MTU 值≥1500),推荐值:8192(MTU 值可根据需要自行修改)。需要连同交换机一起修改(修改方法请咨询交换机厂商)。

#ifconfig 网卡编号 mtu 值
ifconfig eth0 mtu 8192
--或者修改配置文件
cat /sys/class/net/网卡编号/mtu   --cat /sys/class/net/eth0/mtu
echo "8192" > /sys/class/net/网卡编号/mtu

4.rpm 依赖安装

  • 配置 yum 源安装依赖包

    yum install -y zlib-devel libaio libuuid readline-devel krb5-libs libicu libxslt tcl perl openldap pam openssl-devel libxml2 bzip2 --注意:麒麟 V10 环境下需安装 libatomic,否则可能导致初始化失败

5.创建用户和组

  • 注意密码复杂度要求

    groupadd -g 12345 vastbase useradd -u 12345 -g vastbase -d /home/vastbase -m vastbase echo "vastbase:VaSt2_49#3" | chpasswd --注意:组 ID 和用户 ID 是否已存在

6.创建目录

  • 创建数据库目录

    # 软件数据目录 mkdir -p /home/vastbase/data/vastbase chmod 700 /home/vastbase/data/vastbase chown -R vastbase:vastbase /home/vastbase/data/vastbase # 软件安装目录 mkdir -p /home/vastbase/local/vastbase chown -R vastbase:vastbase /home/vastbase

7.修改资源限制

  • 资源限制修改如下

    cat <<EOF >> /etc/security/limits.conf ##FOR vastbase V3.0.8 BEGIN Settings## vastbase soft nproc unlimited vastbase hard nproc unlimited vastbase soft stack unlimited vastbase hard stack unlimited vastbase soft core unlimited vastbase hard core unlimited vastbase soft memlock unlimited vastbase hard memlock unlimited vastbase soft nofile 1024000 vastbase hard nofile 1024000 ##FOR vastbase V3.0.8 END Settings## EOF

三、安装流程详解

上传安装包到服务器 /home/vastbase/soft 目录,并使用 vastbase 用户解压。

[vastbase@ops-dba1-249 ~]$ cd soft [vastbase@ops-dba1-249 soft]$ ll 总用量 260660 -rw-r--r-- 1 root root 266915840 3月 20 16:29 Vastbase-G100-3.0_Build8_29407-Linux-x86_64-no_mot-202512072036.tar [vastbase@ops-dba1-249 soft]$ tar -xvf Vastbase-G100-3.0_Build8_29407-Linux-x86_64-no_mot-202512072036.tar vastbase-installer/ vastbase-installer/vastbase_installer vastbase-installer/locales/ vastbase-installer/locales/messages.en-US.json vastbase-installer/locales/messages.zh-CN.json vastbase-installer/Vastbase-G100-3.0_Build8_29407-Linux-x86_64-no_mot.tar.gz vastbase-installer/.checksum [vastbase@ops-dba1-249 soft]$ ll 总用量 260660 -rw-r--r-- 1 root root 266915840 3月 20 16:29 Vastbase-G100-3.0_Build8_29407-Linux-x86_64-no_mot-202512072036.tar drwxr-xr-x 3 vastbase vastbase 129 12月 7 21:18 vastbase-installer [vastbase@ops-dba1-249 soft]$ cd vastbase-installer [vastbase@ops-dba1-249 vastbase-installer]$ ll 总用量 260588 drwxr-xr-x 2 vastbase vastbase 60 12月 7 21:17 locales -rw-r--r-- 1 vastbase vastbase 261108716 12月 7 21:17 Vastbase-G100-3.0_Build8_29407-Linux-x86_64-no_mot.tar.gz -rwxr-xr-x 1 vastbase vastbase 5727448 12月 7 21:17 vastbase_installer

1.交互式安装(推荐新手)

# 解压后执行
[vastbase@ops-dba1-249 vastbase-installer]$ ./vastbase_installer
===============================================================================

欢迎使用安装工具(V1.0), 下面开始安装Vastbase.

===============================================================================
检查安装包是否完整
---------------

ok
===============================================================================

输入<Enter>继续:

===============================================================================
系统配置信息
---------------

      操作系统 : Red Hat Enterprise Linux Server 7.6 (Maipo)
       CPU核数 : 16
      内存大小 : 32010 MB
    当前用户名 : vastbase

输入<Enter>继续:

===============================================================================
依赖检查
---------------

  readline : 6.2
    python : 2.7.5
    libicu : 50.1.2
  cracklib : 2.9.0
   libxslt : 1.1.28
       tcl : 8.5.13
      perl : 5.16.3
  openldap : 2.4.44
       pam : 1.1.8
systemd-libs : 219
     bzip2 : 1.0.6
   gettext : 0.19.8.1
    libaio : 0.3.109
ncurses-libs : 5.9

输入<Enter>继续:

------------------
准备安装环境...

准备安装环境结束
===============================================================================
IPC参数检查
---------------

IPC参数检查完成
===============================================================================
安装数据库
---------------

是否需要实例化数据库(Y/N): Y

选择安装类型

典型安装    : 使用默认参数配置初始化数据库
自定义安装  : 手动配置安装参数和功能

  -> 1- 典型安装
     2- 自定义安装

选择安装类型,或者输入<Enter>选择默认值(1):
2
===============================================================================
数据库初始化用户密码(按下 退格 键进行回退)
---------------

输入数据库初始化用户(vastbase)密码:

输入数据库初始化用户(vastbase)密码: ***********************************************

密码需要包含大写,小写字母和数字!

输入数据库初始化用户(vastbase)密码:

输入数据库初始化用户(vastbase)密码: ***********************************************

密码需要包含大写,小写字母和数字!

输入数据库初始化用户(vastbase)密码: ********

请再次输入密码: ********

===============================================================================
数据库加密密钥(PGENCRYPTIONKEY)
---------------

数据库加密密钥设置:

  ->  1-   使用数据库初始化用户密码(默认)
      2-   手动输入加密密钥

请选择数据库加密密钥设置方式,或者输入<Enter>选择默认值(1):1
===============================================================================
Vastbase软件安装目录
---------------

Vastbase软件安装目录
  默认位置: /home/vastbase/local/vastbase

输入绝对路径(按下 ctrl+退格 进行回退),或者输入<Enter>使用默认路径:


===============================================================================
数据库初始化目录
---------------

选择数据库目录  默认位置: /home/vastbase/data/vastbase

输入绝对路径(按下 ctrl+退格 进行回退),或者输入<Enter>使用默认路径:

===============================================================================
监听端口
---------------

输入监听端口,或者输入<Enter>选择默认值(5432):
54328
===============================================================================
最大连接数
---------------


输入客户端最大连接数,或者输入<Enter>选择默认值(500):
100
===============================================================================
共享内存
---------------


输入共享内存大小,单位MB,或者输入<Enter>选择默认值(8002):
500
===============================================================================
数据库兼容模式
---------------

指定初始化数据库的兼容模式(A|B|PG|MSSQL)

默认兼容性是A

输入上述兼容性,或者输入<Enter>使用默认模式

PG
数据库兼容模式:PG
===============================================================================
磁盘IO调度算法检查
---------------

开始检查目录/home/vastbase/data/vastbase所属的磁盘IO调度算法

磁盘IO调度算法检查完成
===============================================================================
安装概要
---------------

Vastbase软件安装目录:
    /home/vastbase/local/vastbase

数据库目录:
    /home/vastbase/data/vastbase

数据库初始化用户:
    vastbase

数据库初始化参数:
   listen_addresses='*'
   port=54328
   max_connections=100
   shared_buffers=500MB
   max_process_memory=21286MB
   work_mem=4MB


输入<Enter>继续:


正在安装,请稍后...
初始化数据库成功, 数据目录: /home/vastbase/data/vastbase

数据库三个默认管理员vbaudit、vbsso、vbadmin的默认口令为:
系统管理员[vbadmin] 初始密码: Ub/1aaaf
安全管理员[vbsso] 初始密码: F_6ea78b
审计管理员[vbaudit] 初始密码: T>78fa95

开始生成加密密钥文件
加密密钥文件生成成功

成功更新配置文件: /home/vastbase/data/vastbase/postgresql.conf

正在写入配置文件

正在写入cluster_config.xml文件

正在写入环境变量
成功更新配置文件: '/home/vastbase/.bashrc'
===============================================================================
加载正式License
---------------

是否加载正式License(Y/N): N
===============================================================================
安装完成
---------------

请先指定license路径(license路径错误会导致启动数据库失败):
    请将license路径写入文件 /home/vastbase/data/vastbase/postgresql.conf, 形式为 license_path='license路径'

初始化数据库运行环境:
    source ~/.bashrc

启用、停止、重启数据库:
    vb_ctl <start/stop/restart>


已安装完成,输入<Enter>退出:

[vastbase@ops-dba1-249 vastbase-installer]$
  • 关键配置步骤说明是否需要实例化数据库(Y/N): Y ,本示例选择 Y 进行实例化安装。“选择安装类型” 本示例选择 2- 自定义安装 手动配置安装参数和功能。设置密钥(选1) 本示例选择 使用数据库初始化用户密码(默认)。软件安装目录和数据初始化目录选择我们前面创建好的目录,也就是默认安装目录。
  • 数据库参数设置说明: 监听端口默认 5432,这里选择 54328;最大连接数默认 500,本示例因个人测试环境选择 100;共享内存 默认为系统内存的1/4,本示例因个人测试环境选择 500M;数据库兼容性默认为 A Oracle 兼容,可选值为A、B、PG、MSSQL。分别表示兼容Oracle、MySQL、PostgreSQL和SQL Server,本示例因个人测试环境选择 PG 兼容;
  • 设置 vastbase 超级管理员密码说明:密码需要包含大写,小写字母和数字!设置的密码最少包含8个字符,最多包含16个字符。密码由大小写字母加数字组成,例如:Vast1234、aABb1234。不能有其他特殊字符,这点不太友好,需要注意。
  • 三权分立管理员密码说明: 安装过程中的三个默认管理员账户密码请妥善保管:
    • 系统管理员 [vbadmin]:Ub/1aaaf
    • 安全管理员 [vbsso]:F_6ea78b
    • 审计管理员 [vbaudit]:T>78fa95
  • License 说明:输入Y,提示输入 license 路径,正确输入即可。输入 N,自动生成有效期 90 天的 license 作为试用版本。如安装时未配置 license,后续需要可通过进行配置。也可将 license 文件路径写 入postgresql.conf 配置文件,以确定 license 文件的位置(license 文件路径为绝对路径,且需要指定到文件名级别,可自定义路径,但需要确保 vastbase 用户对 license 文件目录有读权限)。
echo "license_path='/soft/vb/vastbase_license' " >> $PGDATA/postgresql.conf

image20260320163449343.png

image20260320164449795.png

  • 启动数据库实例
[vastbase@ops-dba1-249 ~]$ source ~/.bashrc [vastbase@ops-dba1-249 ~]$ vb_ctl status [2026-03-20 17:05:43.851][14201][][vb_ctl]: vb_ctl status,数据目录是 /home/vastbase/data/vastbase 没有服务器进程正在运行 [vastbase@ops-dba1-249 ~]$ vb_ctl start [2026-03-20 17:06:01.512][14299][][vb_ctl]: vb_ctl started,数据目录是 /home/vastbase/data/vastbase [2026-03-20 17:06:01.723][14299][][vb_ctl]: 等待服务端进程启动 . 2026-03-20 17:06:02.127 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [BACKEND] 日志: 为后台线程保留的内存为: 220 MB 2026-03-20 17:06:02.127 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [BACKEND] 日志: 为WAL缓冲区保留的内存为: 128 MB 2026-03-20 17:06:02.127 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [BACKEND] 日志: 设置最大后端预留内存是:348 MB,max_dynamic_memory是:17715 MB 2026-03-20 17:06:02.127 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [BACKEND] 日志: 共享内存2710Mbytes,内存上下文18063Mbytes,最大进程内存21286Mbytes 2026-03-20 17:06:02.952 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [CACHE] 日志: 设置数据缓存大小(402653184) 2026-03-20 17:06:03.022 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [SEGMENT_PAGE] 日志: 段页连续: DF_MAP_SIZE: 8156, DF_MAP_BIT_CNT: 65248, DF_MAP_GROUP_EXTENTS: 4175872, IPBLOCK_SIZE: 8168, EXTENTS_PER_IPBLOCK: 1021, IPBLOCK_GROUP_SIZE: 4090, BMT_HEADER_LEVEL0_TOTAL_PAGES: 8323072, BktMapEntryNumberPerBlock: 2038, BktMapBlockNumber: 25, BktBitMaxMapCnt: 512 2026-03-20 17:06:03.148 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [EXECUTOR] 详细信息: N/A 2026-03-20 17:06:03.148 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [EXECUTOR] 原因: Incorrect environment value. 2026-03-20 17:06:03.148 [unknown] [unknown] localhost 47073338105088 0[0:0#0] 0 [EXECUTOR] 位置: Please refer to backend log for more details. [2026-03-20 17:06:04.195][14299][][vb_ctl]: 完成 [2026-03-20 17:06:04.195][14299][][vb_ctl]: 服务端进程已经启动 (/home/vastbase/data/vastbase) [vastbase@ops-dba1-249 ~]$ vb_ctl status [2026-03-20 17:06:19.288][14429][][vb_ctl]: vb_ctl status,数据目录是 /home/vastbase/data/vastbase vb_ctl: 正在运行服务器进程(PID: 14317) /home/vastbase/local/vastbase/bin/vastbase
  • 设置 Core_Pattern 说明

    [vastbase@ops-dba1-249 ~]$ mkdir -p /home/vastbase/coredump/corefile ### 使用 root 用户设置 [root@ops-dba1-249:/root]# echo "/home/vastbase/coredump/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

    image20260320171919192.png

2.静默安装(批量部署)

静默安装和Oracle静默安装方式一样,通过配置响应文件即可。

  • 响应文件示例(db_install.rsp)

    vi /home/vastbase/soft/db_install.rsp vastbase_password=Vbase123 encryption_key=Aa123456 vastbase_home=/home/vastbase/local/vastbase vastbase_data=/home/vastbase/data/vastbase port=55432 max_connections=100 shared_buffers=600 db_compatibility=A isinitdb=true ./vastbase_installer --silent -responseFile /home/vastbase/soft/db_install.rsp

3.脚本自动化安装

在前面的文章中也介绍过通过 shell 脚本自动化安装,适配各种环境,不用设置系统参数创建用户、目录等,下载安装包和脚本直接一键安装,省时省力。详情见《一键安装脚本让你5分钟上手海量数据库》

4.其他方式安装

还有 OM 安装和 RPM 的方式安装单机环境,只不过需要专门的安装包,这里没有安装包没法实现了。另外还有 docker 镜像安装以及 GSDP(General Software Development Platform,通用软件部署平台) 和 VEM(VastEM,海量数据企业管理器) 工具图形化安装方式,感兴趣的朋友可自行下载尝试。

5.卸载软件

如果不想使用了,可以使用如下命令卸载,卸载完成后,已安装的 Vastbase 程序(即数据库安装目录$GAUSSHOME 对应目录)和 Vastbase 相关环境变量将被删除,仅保留数据库实例。

./vastbase_installer --uninstall

四、简单管理使用示例

1.vsql 命令行简单管理数据库

## 简单启停命令 --启动数据库 vb_ctl start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME][-o "OPTIONS"] [-M SERVERMODE] --停止数据库 vb_ctl stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] --重启数据库 vb_ctl restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE][-o "OPTIONS"] --显示数据库运行状态 vb_ctl status [-D DATADIR] ## 简单连接使用 --本地连接 vsql -r -d <数据库名> -p <端口号> --远程连接(初始化后禁止连接,需要修改 pg_hba.conf 文件内添加相应的认证策略) --host all vastbase 192.168.xx.xx/32 trust vsql -h <IP 地址> -p <端口号> -d <数据库名> -U <用户名> [vastbase@ops-dba1-249 ~]$ vsql -r -d vastbase vsql ((Vastbase G100 V3.0 (Build 8) Release) compiled at 2025-12-07 20:41:30 commit 29407 last mr ) 非SSL连接(安全性要求高时,建议使用SSL连接) 输入 "help" 来获取帮助信息。 vastbase=# SELECT version(); version ------------------------------------------------------------------------------ PostgreSQL 9.2.4 on x86_64-pc-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit (1 行记录) create database JiekeXu; \c jiekexu \l create user JiekeXu with password 'JiekeXu123'; grant connect on database JiekeXu to JiekeXu; \du create table JiekeXu(id int); insert into JiekeXu values(1),(2),(3); select * from JiekeXu; id ---- 1 2 3

image20260320175920284.png

2.其他常用命令

## 查看数据库版本 select version(); ## 查看用户列出所有用户的权限信息 \du ## 查看当前用户 \c  或  select current_user; SELECT SESSION_USER,CURRENT_USER; ## 退出数据库 \q ## 查看数据库、所有者、字符集 \l ## 切换数据库 \c  JiekeXu ## 切换用户 \c  - system ## 列举表 \dt ## 查看表结构 \d t_ai_coms ## 查看索引 \di ## 查看角色属性 \du  or \dg ## 查看用户列表 SELECT * FROM pg_user; ## 查看用户属性 SELECT * FROM pg_authid; ## 开启扩展显示 \x ## 查看当前数据存储目录 show data_directory; ## 查看文件路径 show config_file; show hba_file; show ident_file; ## 查询pg_roles系统视图查看用户权限 SELECT * FROM pg_roles; ## 查看数据库角色 SELECT * FROM PG_ROLES; ## 查看数据库时间 SELECT NOW; SELECT SYSDATE; SELECT CURRENT_TIMESTAMP; SELECT CURRENT_DATE; SELECT CURRENT_TIME;

3.日志分析监控工具

# 使用 pgBadger 分析日志 vim postgresql.conf log_destination = 'stderr' # 确保日志输出到文件 logging_collector = on # 启用日志收集器 log_directory = '/home/vastbase/data/vastbase/pg_log' # 与实际路径一致 log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # 日志文件名格式 log_rotation_age = 1d # 日志轮转周期 log_rotation_size = 10MB # 单个日志文件最大尺寸 pgbadger /home/vastbase/data/vastbase/pg_log/postgresql-2026-03-25_000000.log -f syslog -o report.html

五、核心特性实战

今天先跟着德哥的脚步用 pgbench tpc-b 压测一番,确实 IO 高时抖动很严重。

[vastbase@ops-dba1-249 ~]$ pgbench -i -s 100 注意: 表 "pgbench_branches" 不存在 注意: 表 "pgbench_tellers" 不存在 注意: 表 "pgbench_accounts" 不存在 注意: 表 "pgbench_history" 不存在 creating tables... 625000 tuples done. 1250000 tuples done. 1875000 tuples done. 2500000 tuples done. 3125000 tuples done. 3750000 tuples done. 4375000 tuples done. 5000000 tuples done. 5625000 tuples done. 6250000 tuples done. 6875000 tuples done. 7500000 tuples done. 8125000 tuples done. 8750000 tuples done. 9375000 tuples done. 10000000 tuples done. set primary key... 注意: ALTER TABLE / ADD PRIMARY KEY 将要为表 "pgbench_branches" 创建隐含索引 "pgbench_branches_pkey" 注意: ALTER TABLE / ADD PRIMARY KEY 将要为表 "pgbench_tellers" 创建隐含索引 "pgbench_tellers_pkey" 注意: ALTER TABLE / ADD PRIMARY KEY 将要为表 "pgbench_accounts" 创建隐含索引 "pgbench_accounts_pkey" vacuum...done. [vastbase@ops-dba1-249 ~]$ pgbench -M prepared -n -r -P 1 -c 8 -j 8 -T 120 progress: 1.0 s, 4029.5 tps, lat 1.907 ms stddev 1.551 progress: 2.0 s, 4289.5 tps, lat 1.867 ms stddev 1.172 progress: 3.0 s, 4132.9 tps, lat 1.934 ms stddev 0.813 progress: 4.0 s, 4309.9 tps, lat 1.855 ms stddev 0.606 progress: 5.0 s, 3517.1 tps, lat 2.273 ms stddev 2.667 progress: 6.0 s, 4390.9 tps, lat 1.820 ms stddev 0.638 progress: 7.0 s, 4346.8 tps, lat 1.840 ms stddev 1.737 progress: 8.0 s, 4721.7 tps, lat 1.693 ms stddev 0.588 progress: 9.0 s, 4385.5 tps, lat 1.823 ms stddev 1.253 progress: 10.0 s, 4389.3 tps, lat 1.821 ms stddev 0.701 progress: 11.0 s, 4588.0 tps, lat 1.744 ms stddev 0.545 progress: 12.0 s, 4556.8 tps, lat 1.755 ms stddev 2.209 progress: 13.0 s, 2847.7 tps, lat 2.810 ms stddev 5.098 progress: 14.0 s, 1300.8 tps, lat 6.141 ms stddev 23.590 progress: 15.0 s, 1045.5 tps, lat 7.309 ms stddev 31.288 progress: 16.0 s, 1397.3 tps, lat 5.967 ms stddev 21.744 progress: 17.0 s, 824.7 tps, lat 9.762 ms stddev 24.683 progress: 18.0 s, 493.0 tps, lat 16.204 ms stddev 63.688 progress: 19.0 s, 2554.6 tps, lat 3.132 ms stddev 10.095 progress: 20.0 s, 4231.8 tps, lat 1.891 ms stddev 1.894 progress: 21.0 s, 4455.0 tps, lat 1.795 ms stddev 0.647 progress: 22.0 s, 2716.2 tps, lat 2.936 ms stddev 9.407 progress: 23.0 s, 3592.5 tps, lat 2.232 ms stddev 5.165 progress: 24.0 s, 4545.2 tps, lat 1.758 ms stddev 0.668 progress: 25.0 s, 4171.6 tps, lat 1.918 ms stddev 1.808 progress: 26.0 s, 2207.1 tps, lat 3.621 ms stddev 8.803 progress: 27.0 s, 1798.8 tps, lat 4.388 ms stddev 13.369 progress: 28.0 s, 1921.6 tps, lat 4.224 ms stddev 8.952 progress: 29.0 s, 1702.9 tps, lat 4.657 ms stddev 9.161 progress: 30.0 s, 1689.7 tps, lat 4.773 ms stddev 25.065 progress: 31.0 s, 4105.4 tps, lat 1.937 ms stddev 5.091 progress: 32.0 s, 2627.0 tps, lat 3.062 ms stddev 7.741 progress: 33.0 s, 3915.3 tps, lat 2.042 ms stddev 2.946 progress: 34.0 s, 1471.7 tps, lat 4.825 ms stddev 25.679 progress: 35.0 s, 993.9 tps, lat 8.954 ms stddev 54.250 progress: 36.0 s, 4055.6 tps, lat 1.972 ms stddev 3.368 progress: 37.0 s, 3164.8 tps, lat 2.525 ms stddev 2.157 progress: 38.0 s, 3403.1 tps, lat 2.314 ms stddev 6.728 progress: 39.0 s, 2268.6 tps, lat 3.580 ms stddev 11.225 progress: 40.0 s, 2010.8 tps, lat 3.947 ms stddev 17.891 progress: 41.0 s, 2660.3 tps, lat 3.031 ms stddev 10.708 progress: 42.0 s, 3963.9 tps, lat 2.018 ms stddev 6.877 progress: 43.1 s, 1098.4 tps, lat 5.545 ms stddev 38.222 progress: 44.0 s, 3637.9 tps, lat 2.899 ms stddev 20.185 progress: 45.0 s, 4387.6 tps, lat 1.823 ms stddev 0.635 progress: 46.0 s, 2306.3 tps, lat 3.456 ms stddev 9.619 progress: 47.0 s, 3871.6 tps, lat 2.073 ms stddev 2.018 progress: 48.0 s, 2603.7 tps, lat 3.072 ms stddev 6.247 progress: 49.1 s, 870.3 tps, lat 9.194 ms stddev 37.959 progress: 50.0 s, 3427.6 tps, lat 2.332 ms stddev 4.771 progress: 51.0 s, 3894.4 tps, lat 2.053 ms stddev 3.193 progress: 52.0 s, 2643.0 tps, lat 3.025 ms stddev 4.826 progress: 53.0 s, 4031.9 tps, lat 1.983 ms stddev 1.213 progress: 54.0 s, 4394.7 tps, lat 1.818 ms stddev 0.655 progress: 55.0 s, 1085.9 tps, lat 7.344 ms stddev 28.325 progress: 56.0 s, 3655.7 tps, lat 2.196 ms stddev 6.286 progress: 57.0 s, 4107.5 tps, lat 1.946 ms stddev 1.518 progress: 58.2 s, 1243.1 tps, lat 5.063 ms stddev 28.114 progress: 59.1 s, 55.7 tps, lat 167.059 ms stddev 153.975 progress: 60.0 s, 3711.5 tps, lat 2.370 ms stddev 9.196 progress: 61.0 s, 3275.4 tps, lat 2.441 ms stddev 1.872 progress: 62.0 s, 3509.5 tps, lat 2.279 ms stddev 3.193 progress: 63.0 s, 4158.9 tps, lat 1.923 ms stddev 0.775 progress: 64.0 s, 1563.1 tps, lat 5.113 ms stddev 22.523 progress: 65.0 s, 3786.6 tps, lat 2.112 ms stddev 3.139 progress: 66.0 s, 4154.0 tps, lat 1.924 ms stddev 0.736 progress: 67.2 s, 1004.2 tps, lat 7.312 ms stddev 30.660 progress: 68.0 s, 4058.4 tps, lat 2.211 ms stddev 7.332 progress: 69.0 s, 4722.9 tps, lat 1.694 ms stddev 0.601 progress: 70.0 s, 2900.4 tps, lat 2.759 ms stddev 2.521 progress: 71.0 s, 3698.9 tps, lat 2.159 ms stddev 2.485 progress: 72.0 s, 4589.1 tps, lat 1.742 ms stddev 0.529 progress: 73.0 s, 2987.6 tps, lat 2.677 ms stddev 2.855 progress: 74.1 s, 2001.3 tps, lat 3.825 ms stddev 21.714 progress: 75.5 s, 65.8 tps, lat 84.868 ms stddev 282.483 progress: 76.0 s, 1153.4 tps, lat 12.649 ms stddev 84.933 progress: 77.0 s, 2207.3 tps, lat 3.304 ms stddev 8.473 progress: 78.0 s, 1776.0 tps, lat 4.951 ms stddev 16.526 progress: 79.0 s, 2788.1 tps, lat 2.868 ms stddev 2.589 progress: 80.0 s, 3991.2 tps, lat 2.002 ms stddev 1.308 progress: 81.0 s, 4088.9 tps, lat 1.955 ms stddev 2.257 progress: 82.0 s, 2560.1 tps, lat 3.125 ms stddev 5.404 progress: 83.0 s, 4159.7 tps, lat 1.923 ms stddev 0.899 progress: 84.2 s, 1622.4 tps, lat 4.930 ms stddev 19.325 progress: 85.0 s, 221.3 tps, lat 36.173 ms stddev 64.717 progress: 86.0 s, 3273.4 tps, lat 2.441 ms stddev 7.819 progress: 87.0 s, 3647.4 tps, lat 2.192 ms stddev 7.583 progress: 88.0 s, 2761.1 tps, lat 2.898 ms stddev 3.094 progress: 89.1 s, 1437.9 tps, lat 5.442 ms stddev 18.247 progress: 90.0 s, 192.7 tps, lat 42.302 ms stddev 54.944 progress: 91.0 s, 705.4 tps, lat 11.392 ms stddev 31.948 progress: 92.0 s, 4284.9 tps, lat 1.864 ms stddev 0.727 progress: 93.0 s, 2730.3 tps, lat 2.928 ms stddev 3.179 progress: 94.0 s, 2731.0 tps, lat 2.933 ms stddev 3.779 progress: 95.2 s, 2039.8 tps, lat 3.622 ms stddev 15.167 progress: 96.0 s, 4925.1 tps, lat 1.825 ms stddev 7.157 progress: 97.0 s, 3124.4 tps, lat 2.558 ms stddev 2.817 progress: 98.0 s, 2530.0 tps, lat 3.163 ms stddev 3.530 progress: 99.0 s, 3618.7 tps, lat 2.203 ms stddev 5.526 progress: 100.1 s, 1244.4 tps, lat 6.243 ms stddev 24.012 progress: 101.0 s, 3493.6 tps, lat 2.373 ms stddev 7.240 progress: 102.0 s, 1921.3 tps, lat 4.031 ms stddev 23.573 progress: 103.0 s, 115.6 tps, lat 70.343 ms stddev 80.456 progress: 104.3 s, 90.4 tps, lat 80.545 ms stddev 243.659 progress: 105.2 s, 2490.0 tps, lat 3.590 ms stddev 24.812 progress: 106.0 s, 484.9 tps, lat 16.769 ms stddev 51.640 progress: 107.0 s, 328.8 tps, lat 21.666 ms stddev 43.536 progress: 108.1 s, 225.6 tps, lat 38.934 ms stddev 60.714 progress: 109.1 s, 181.2 tps, lat 39.401 ms stddev 51.164 progress: 110.1 s, 3049.7 tps, lat 2.771 ms stddev 14.201 progress: 111.0 s, 364.1 tps, lat 24.000 ms stddev 48.359 progress: 112.0 s, 476.6 tps, lat 16.302 ms stddev 32.894 progress: 113.0 s, 2721.1 tps, lat 3.029 ms stddev 13.562 progress: 114.2 s, 3797.1 tps, lat 2.062 ms stddev 7.516 progress: 115.1 s, 827.1 tps, lat 9.481 ms stddev 21.241 progress: 116.1 s, 1175.0 tps, lat 6.672 ms stddev 19.983 progress: 117.0 s, 233.2 tps, lat 34.170 ms stddev 43.197 progress: 118.0 s, 359.1 tps, lat 23.661 ms stddev 24.705 progress: 119.1 s, 298.6 tps, lat 25.523 ms stddev 28.952 progress: 120.0 s, 164.5 tps, lat 51.279 ms stddev 81.135 transaction type: TPC-B (sort of) scaling factor: 100 query mode: prepared number of clients: 8 number of threads: 8 duration: 120 s number of transactions actually processed: 311265 latency average: 3.082 ms latency stddev: 14.836 ms tps = 2593.473077 (including connections establishing) tps = 2594.252212 (excluding connections establishing) statement latencies in milliseconds: 0.002374 \set nbranches 1 * :scale 0.000905 \set ntellers 10 * :scale 0.000816 \set naccounts 100000 * :scale 0.000887 \setrandom aid 1 :naccounts 0.000643 \setrandom bid 1 :nbranches 0.000629 \setrandom ttid 1 :ntellers 0.000596 \setrandom delta -5000 5000 0.123379 START TRANSACTION; 0.275386 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid; 0.149353 SELECT abalance FROM pgbench_accounts WHERE aid = :aid; 0.219258 UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE ttid = :ttid; 0.279042 UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid; 0.189733 INSERT INTO pgbench_history (ttid, bid, aid, delta, mtime) VALUES (:ttid, :bid, :aid, :delta, CURRENT_TIMESTAMP); 1.834809 END; [vastbase@ops-dba1-249 ~]$ vsql -d vastbase -r vsql ((Vastbase G100 V3.0 (Build 8) Release) compiled at 2025-12-07 20:41:30 commit 29407 last mr ) 非SSL连接(安全性要求高时,建议使用SSL连接) 输入 "help" 来获取帮助信息。 vastbase=# \dt+ 关联列表 架构模式 | 名称 | 型别 | 拥有者 | 大小 | 存储 | 描述 ----------+------------------+------+----------+---------+-------------------------------------------------+------ public | pgbench_accounts | 表 | vastbase | 1300 MB | {orientation=row,fillfactor=100,compression=no} | public | pgbench_branches | 表 | vastbase | 936 kB | {orientation=row,fillfactor=100,compression=no} | public | pgbench_history | 表 | vastbase | 20 MB | {orientation=row,compression=no,fillfactor=80} | public | pgbench_tellers | 表 | vastbase | 728 kB | {orientation=row,fillfactor=100,compression=no} | (4 行记录)

1.行列混合存储测试

-- 创建列存表 vsql -p 54328 vastbase -d jiekexu -r -C CREATE TABLE test_col ( id int, info text, ts timestamp ) WITH (ORIENTATION = COLUMN); -- 创建行存表 CREATE TABLE test_row ( id int, info text, ts timestamp ) WITH (ORIENTATION = ROW); --分别插入 100w 条数据 insert into test_col select generate_series(1,1000000), md5(random()::text), clock_timestamp(); insert into test_row select generate_series(1,1000000), md5(random()::text), clock_timestamp(); explain analyze (select avg(id) from test_col); -- 列存:9ms vs 行存:252ms explain analyze (select avg(id) from test_row);

对比列存和行存,磁盘大小上列存仅是行存的约三分之一,然后分析查询的性能表现, 列存使用到了向量化执行, 所以会快很多, 速度提升达到 16 倍多点。

image20260320193536773.png

2.向量检索

Vastbase G100中,使用专门的 floatvector 数据类型来存储向量数据,一个表可以包含一个或者多个 floatvector 字段。支持通过多种向量操作符和向量运算函数来执行向量计算,支持通过状态查询函数查询向量检索索引的状态信息。支持 Graph_Index 索引、向标联合索引 HybridAnn 索引和基于 BM25 算法实现的全文检索索引 fulltext。

--创建向量表并插入数据 CREATE TABLE items (id bigserial PRIMARY KEY, embedding floatvector(3)); INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'); --更新数据 UPDATE items SET embedding = '[1, 2, 8]' WHERE id =1; --UPSERT向量数据 INSERT INTO items (id, embedding) VALUES (1, '[1, 2, 4]'), (2, '[4, 5, 7]') ON CONFLICT (id) DO UPDATE SET embedding = EXCLUDED.embedding; --向己存在的表中添加一个向量列 ALTER TABLE items ADD COLUMN embedding1 floatvector (3); --创建欧几里得距离向量索引 CREATE INDEX idx_items_vecemd ON items USING graph_index(embedding floatvector_l2_ops) WITH(m=16,ef_construction=64, parallel_workers=1);

image20260324191055319.png

3.Ustore引擎

相较于 Astore ,Ustore 将最新版本的“有效数据”和历史版本的“垃圾数据”分离存储。将最新版本的“有效数据”存储在数据页面上,并单独开辟出一段 Undo 空间,用于统一历史版本的“垃圾数据”,因此数据空间不会由于频繁更新而膨胀,“垃圾数据”集中回收效率更高。Ustore 存储引擎采用 NUMA-Aware 的 Undo 一系统可以在多核平台上有效扩展;同时采用多版本索引技术,解决索引清理问题,有效提升了存储空间的回收复用效率。

-- 创建Ustore表 CREATE TABLE account_ustore ( id SERIAL PRIMARY KEY, info text, ts timestamp ) WITH (storage_type=ustore); --或者设置 GUC 参数 set enable_default_ustore_table=on,默认指定用户创建表时使用 Ustore 存储引擎 \timing -- 批量插入 100万条 SET enable_heap_multi_insert_for_insert_select = on; insert into account_ustore select generate_series(1,1000000), md5(random()::text), clock_timestamp(); -- 时间:11765.393 ms -- 创建 Astore表,批量插入 100万条 CREATE TABLE account_astore ( id int primary key, info text, ts timestamp ) WITH (storage_type=astore); insert into account_astore select generate_series(1,1000000), md5(random()::text), clock_timestamp(); -- 时间:8053.710 ms

image20260325151453938.png

根据上图可以看到 Ustore 表插入数据比 Astore 稍微慢一些,接下来我们构造两个脚本用来频繁跟新这两个表数据,并记录表大小。

-- Ustore 表高频更新示例 \timing CREATE INDEX idx_account_ustore_id ON account_ustore USING ubtree(id) INCLUDE (info, ts); DO $$ DECLARE i INT := 0; v_date DATE; BEGIN FOR i IN 1..10 LOOP SELECT sysdate INTO v_date; UPDATE account_ustore SET info = md5(random()::text) WHERE id > 200; COMMIT; DELETE FROM account_ustore WHERE id > 200; COMMIT; INSERT INTO account_ustore SELECT * FROM account_astore WHERE id > 200 AND id <= 999988; COMMIT; END LOOP; END; $$; --输出时间:592886.251 ms jiekexu=# \dt+ account_ustore; 关联列表 架构模式 | 名称 | 型别 | 拥有者 | 大小 | 存储 | 描述 ----------+----------------+------+----------+--------+--------------------------------------------------------------------+------ public | account_ustore | 表 | vastbase | 401 MB | {orientation=row,storage_type=ustore,fillfactor=80,compression=no} | -- Astore 表高频更新示例 DO $$ DECLARE i INT := 0; v_date DATE; BEGIN FOR i IN 1..10 LOOP SELECT sysdate INTO v_date; UPDATE account_astore SET info = md5(random()::text) WHERE id > 200; COMMIT; DELETE FROM account_astore WHERE id > 200; COMMIT; INSERT INTO account_astore SELECT * FROM account_ustore WHERE id > 200 AND id <= 999988; COMMIT; END LOOP; END; $$; --输出时间:209245.201 ms 执行结果较慢 jiekexu=# \dt+ account_astore; 关联列表 架构模式 | 名称 | 型别 | 拥有者 | 大小 | 存储 | 描述 ----------+----------------+------+----------+---------+--------------------------------------------------------------------+------ public | account_astore | 表 | vastbase | 1692 MB | {orientation=row,storage_type=astore,compression=no,fillfactor=80} |

可以看到 Ustore 引擎经过上面的更新删除插入后大小为 401M 大概为原来的 5 倍,但是DML操作时间大概 60s; Astore 引擎经过 DML 操作后大小为 1692 M 大概为原来的 18 倍,但是 DML 操作时间大概 20s 是 Ustore 的三分之一。

image20260325183339722.png

Ustore 直接原地更新,直接修改数据页,垃圾回收通过 Undo 空间集中管理,回收效率高,表膨胀率低;而 Astore 则是追加更新,旧版本数据任然保留在数据页,需要通过 Vacuum 来清理旧版本数据,表膨胀率非常高(本次测试中达 18 倍),上面是比较理想的情况下的测试,如果在有长事务情况下进行,Astore 的表膨胀问题则会明显恶化,Ustore 优势则会非常明显。

vastbase G100 还提供了其他非常棒的企业级能力,,比如国密加密、安全审计、动态脱敏等等,有兴趣的朋友, 特别是对国产信创数据库感兴趣的朋友, 可以多测试一下看看。

六、高频报错解决方案

1.内存不足启动失败

FATAL:  the values of memory out of limit, the database failed to be started, max_process_memory (8002MB) must greater than 2GB + cstore_buffers(512MB) + (udf_memory_limit(200MB) - UDF_DEFAULT_MEMORY(200MB)) + shared_buffers(942MB) + preserved memory(3513MB) = 7015MB, reduce the value of shared_buffers, max_pred_locks_per_transaction, max_connection, wal_buffers..etc will help reduce the size of preserved memory

修复步骤

## 临时解决
vb_ctl start -o "-c max_process_memory=16GB"
## 永久修改
echo "max_process_memory=16GB" >> postgresql.conf

## 内存分配公式
max_process_memory ≥ shared_buffers + (max_connections × work_mem) + 2GB
21286 MB ≥ 500MB + (100 X 4) + 2GB = 2948

## 示例内存参数
shared_buffers = 500MB              # 最大为总内存的 1/4 即可
max_process_memory = 21286 M        # 最大为总内存的 60% 左右
work_mem = 4MB                      # 单查询工作内存

maintenance_work_mem = 16MB         # 维护操作(建索引)内存
wal_buffers = 1GB                   # WAL日志缓存
cstore_buffers = 512MB              # 列存缓存
udf_memory_limit = 200MB            # UDF内存限制

2.License 许可证过期

# 更新许可证路径
echo "license_path='/opt/vastbase.lic'" >> postgresql.conf
vb_ctl restart

参考链接

https://www.vastdata.com.cn https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.9/1/aab5cf6ecf3f46a89424c6d82f82ace1 https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/6b1b95f9b5db46f7bbd7ca3247a12ed https://mp.weixin.qq.com/s/mg3mGkSk3B6Z32M1mgj7HQ https://mp.weixin.qq.com/s/cfWB7FLxqH0ZqQaQPEuV0Q https://mp.weixin.qq.com/s/pB57jshTLUAzeHmJzxj6ug https://mp.weixin.qq.com/s/MZr9KXctGo14e8rnrEbgmA https://mp.weixin.qq.com/s/y8dh8ZEBlSHGEagFDb_ReA

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

最后修改时间:2026-03-26 09:47:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论