-
获取函数DDLselect oid from pg_proc where procname = '函数命 ’ ;select pg_get_functiondef(oid);把函数的中的SQL取出来优化: 1.调整分布 ,建索引student 表改用 name 分布teacher 表改用 REPLICATION 分布student表建组合索引(classname , name),单个索引(classname)跑拿出SQL的执行计划,优化单个SQL后,再去根据单个SQL执行计划出来的路径绑定存储过程的SQL PATCH2 .使用SQL patch 绑定hint 分布式需要在所有cnselect reset_unique_sql( 'GLOBAL ’ , 'ALL ’ ,0) ;管理员用户root连接业务数据库set track_stmt_stat_level = 'L0 ,L1 ’ ;调用函数– 获取单个 SQL的 unique_sql_id查询视图dbe_perf .summary_statement获取 unique_sql_idselect unique_sql_id ,query from dbe_perf .summary_statement where query like 'select%student% ’ ;创建调优SQL PATCH,使该SQL语句走IndexOnlyScan select * fromdbe_sql_util .create_hint_sql_patch('patch1 ’ ,unique_sql_id , 'IndexScan(t1) ');dbe_sql_util .create_hint_sql_patch('patch1 ’ ,unique_sql_id , 'set(enable_index_ nestloop on) ') ;执行如下命令删除SQL PATCH (考试的时候不删除)select * from dbe_sql_util .drop_sql_patch('patch1 ');– 获取存储过程中的SQL的unique_sql_idselect unique_query_id ,query from statement_history where query ilike 'select%student% ’ or query ilike 'call get_select1() ’ ;– 查询创建的patchselect * from gs_sql_patch;select unique_sql_id ,query ,node_NAME from dbe_perf .summary_statement where query like 'call% ’ or query like 'select%student% ’ ;level1.调整分布列;2.聚合 ,排序字段建索引3.表达式索引4.自定义函数下推5.改列存 ,改astore启用列存参数gs_guc set -Z coordinator -Z datanode -N all -I all -c " enable_cstore = on"建表附带: with(storage_type=aSTORE,orientation=column)向量化参数是否友提升 set try_vector_engine_strategy=force;获取函数DDL的方式:select oid from pg_proc where procname = ‘函数命’;select pg_get_functiondef(oid);
-
GaussDB TPCC 压测资源下载 请从以下地址获取所需资源包:• Apache Ant: https://dlcdn.apache.org//ant/binaries/apache-ant-1.10.15-bin.zip• BenchmarkSQL: https://sourceforge.net/projects/benchmarksql/files/benchmarksql-5.0.zip/download• GaussDB 驱动: https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1730887196055/GaussDB_driver.zip *(注:请替换为实际的内网或官方下载地址)*1. 资源准备在开始压测前,请确保已下载以下资源包:• Apache Ant: apache-ant-1.10.15-bin.zip• BenchmarkSQL: benchmarksql-5.0.zip• GaussDB 驱动: GaussDB_driver.zip 2. 环境依赖安装登录三台 GaussDB 服务器,执行以下命令安装必要的依赖工具:yum install wget fio iotop java-1.8.0-* -y 3. BenchmarkSQL 安装与初始化3.1 传输安装包通过桌面连接工具将安装包传输至第一台 GaussDB 服务器:scp /home/user/Downloads/benchmarksql-5.0.zip \ /home/user/Downloads/GaussDB_driver.zip \ /home/user/Downloads/apache-ant-1.10.15-bin.zip \ root@{$gaussdbip}:/home/Ruby/ 3.2 解压与配置在 GaussDB 服务器上执行以下命令:chown Ruby:Ruby /home/Ruby/benchmarksql-5.0.zip \ /home/Ruby/apache-ant-1.10.15-bin.zip \ /home/Ruby/GaussDB_driver.zipsu - Rubysource /home/Ruby/gauss_env_fileunzip apache-ant-1.10.15-bin.zipunzip benchmarksql-5.0.zipunzip GaussDB_driver.zipcd /home/Ruby/benchmarksql-5.0 3.3 使用 Ant 初始化环境/home/Ruby/apache-ant-1.10.15/bin/ant成功回显示例:Buildfile: /home/Ruby/benchmarksql-5.0/build.xmlinit:compile: [javac] Compiling 11 source files to /home/Ruby/benchmarksql-5.0/builddist: [jar] Building jar: /home/Ruby/benchmarksql-5.0/dist/BenchmarkSQL-5.0.jarBUILD SUCCESSFULTotal time: 2 seconds 4. 配置文件修改4.1 创建测试配置进入 BenchmarkSQL 安装目录并创建配置文件:cd /home/Ruby/benchmarksql-5.0/runcp props.pg props_test 4.2 编辑 props_test使用 vi props_test 修改配置如下:db=postgresdriver=org.postgresql.Driverconn=jdbc:postgresql://${当前CN的IP地址}:8000/db_tpcc?currentSchema=db_tpcc&autoBalance=true&loggerLevel=OFFuser=tpccpassword=${password}warehouses=500loadWorkers=16terminals=150# To run specified transactions per terminal- runMins must equal zerorunTxnsPerTerminal=0# To run for specified minutes- runTxnsPerTerminal must equal zerorunMins=5# Number of total transactions per minutelimitTxnsPerMin=0# Set to true to run in 4.x compatible mode. Set to false to use the# entire configured database evenly.terminalWarehouseFixed=true# The following five values must add up to 100# The default percentages of 45, 43, 4, 4 & 4 match the TPC-C specnewOrderWeight=46paymentWeight=46orderStatusWeight=0deliveryWeight=8stockLevelWeight=0# Directory name to create for collecting detailed result data.# Comment this out to suppress.resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS# osCollectorScript=./misc/os_collector_linux.pyosCollectorInterval=1# osCollectorSSHAddr=user@dbhostosCollectorDevices=net_eth0 blk_sda 5. 驱动替换将 GaussDB 驱动替换 BenchmarkSQL 默认的 PostgreSQL 驱动:cd /home/Ruby/GaussDB_driver/Centralized/Kylinv10_arm_64tar -zxvf GaussDB-Kernel_505.2.0_Kylin_64bit_Jdbc.tar.gzmv gsjdbc4.jar /home/Ruby/benchmarksql-5.0/lib/postgres/cd /home/Ruby/benchmarksql-5.0/lib/postgres/rm -f postgresql-9.3-1102.jdbc41.jar 6. 数据导入与压测执行6.1 执行导数操作cd /home/Ruby/benchmarksql-5.0/runnohup /home/Ruby/benchmarksql-5.0/run/runDatabaseBuild.sh /home/Ruby/benchmarksql-5.0/run/props_test &查看运行日志:tail -f ./nohup.out 6.2 调整建表脚本(如需要)若需使用通用建表脚本,执行以下操作:cd /home/user/benchmark/runmv /home/user/benchmark/run/sql.postgres/tableCreates.sql \ /home/user/benchmark/run/sql.postgres/tableCreates.sql.bakcp /home/user/benchmark/run/sql.common/tableCreates.sql \ /home/user/benchmark/run/sql.postgres/tableCreates.sql 6.3 配置初始化参数编辑 props.pg 文件:vim props.pg注意:IP 连接串配置为实验实例的 DN 的 IP 和端口。数据库名、用户名 user、密码 password 为新创建的测试库及测试用户信息。关键参数建议:• warehouses=2:导入数据量设置为 2 仓(预计耗时 5 分钟)• loadWorkers=1:导入并发数• runMins=3:每次运行时间 3 分钟• terminals=10:压测并发数保存并退出::wq! 6.4 导入初始化数据./runDatabaseBuild.sh props.pg 6.5 启动压测cd /home/user/benchmark/run./runBenchmark.sh props.pg 7. 监控与参数调优7.1 安装监控工具在数据库主 DN 服务器上安装 sysstat:yum install sysstat 7.2 磁盘监控压测期间观测磁盘使用情况:iostat -xm 2 7.3 磁盘调度策略优化修改数据库节点的磁盘调度策略为 mq-deadline:echo 'mq-deadline' > /sys/block/vdb/queue/scheduler 7.4 数据库参数调优警告:修改以下参数值会造成资源额外消耗,建议修改前进行充分评估。一般在超重负载的场景下可能影响性能,需要配置此参数。修改预写日志文件数:gs_guc set -I all -N all -Z datanode -c "advance_xlog_file_num=100"修改 WAL 文件初始化数量:gs_guc set -I all -N all -Z datanode -c "wal_file_init_num=20" 检查防火墙规则。iptables -L -n --line-number以下命令注入网络连通性异常,5000端口拒绝数据包。iptables -I OUTPUT -p tcp --dport 5000 -j REJECTiptables-save主机iptables规则禁用5000端口,删除相应iptables规则。 iptables -D OUTPUT 1iptables-saveiptables -L -n --line-number
-
创建行级访问控制自定义函数CREATE OR REPLACE FUNCTION create_user_and_grant(IN p_username VARCHAR)RETURNS intLANGUAGE plpgsqlSECURITY DEFINER – 关键:以函数所有者(管理员)权限执行,确保有权限建用户和改表结构AS $$BEGIN – 1. 创建用户 (默认密码设为 Gauss_135) – quote_ident 防止 SQL 注入,%I 代表标识符 EXECUTE format(‘CREATE USER %I PASSWORD ‘‘Gauss_135’’’, p_username);– 2. 授予 Schema 的 USAGE 权限 (入场券) EXECUTE format(‘GRANT USAGE ON SCHEMA u1 TO %I’, p_username);– 3. 授予表的 SELECT 权限 (基础查询权) – 注意:原图这里写的是 t3,根据你的需求描述应为 t2,此处已修正 EXECUTE format(‘GRANT SELECT ON u1.t2 TO %I’, p_username);– 4. 开启行级安全 (RLS) – 注意:如果表已经开启过,再次执行会报错。生产环境建议加判断或忽略错误 BEGIN EXECUTE ‘ALTER TABLE u1.t2 ENABLE ROW LEVEL SECURITY’; EXCEPTION WHEN OTHERS THEN – 如果已开启则跳过,或者你可以选择注释掉这一行手动执行一次 NULL; END;– 5. 创建/更新行级策略 (核心修改部分) – 逻辑:假设用户名与 depa 字段值对应 (例如用户名为 user_dep5,则只能看 dep5) – 这里的 USING 条件被动态拼接,不再是写死的 ‘dep5’ EXECUTE format( ‘CREATE POLICY pol_%I ON u1.t2 FOR SELECT TO %I USING (depa = %L)’, p_username, – 策略名称的一部分,保证唯一性 p_username, – 策略适用的目标用户 p_username – 【关键点】将用户名作为字符串值传入比较条件 );RETURN 1;END;;; ;
-
干货全拿走,学会就涨薪” 先立flag,后面慢慢写
-
[运维管理] DWS 线下8.2.1版本,开启系统表的vacuum以后为什么系统表的脏页还是一直在增加?怎么样让释放和占用的达到平衡?如果必须手动做vacuum full是否可以不停业务做?一直增加会有什么影响?DWS 线下8.2.1版本,开启系统表的vacuum以后为什么系统表的脏页还是一直在增加?怎么样让释放和占用的达到平衡?如果必须手动做vacuum full是否可以不停业务做?一直增加会有什么影响?
-
“干货全拿走,学会就涨薪” 账本数据库设置启用账本数据库参数```su - Ruby/usr/sbin/chroot /var/chrootsource /home/Ruby/gauss_env_filegs_guc reload -Z coordinator -Z datanode -N all -I all -c "enable_ledger=on";```在数据库中创建防篡改Schema```CREATE SCHEMA blocks WITH BLOCKCHAIN;```创建账本表。```CREATE TABLE blocks.t1(id int, name varchar);```更新、删除账本表中的数据```INSERT INTO blocks.t1 VALUES(1, 'alex');INSERT INTO blocks.t1 VALUES(2, 'bob');SELECT *, hash_83f153 FROM blocks.t1;UPDATE blocks.t1 SET name = 'bob2' WHERE id = 2;DELETE FROM blocks.t1 WHERE id = 1;SELECT *, hash_83f153 FROM blocks.t1;```查询历史表```SELECT * FROM blockchain.blocks_t1_hist;历史表表名可以通过 \d+ 表名看到```查看历史摘要```SELECT * FROM gs_global_chain;```校验账本表、历史表和全局表:```SELECT pg_catalog.ledger_hist_check('blocks', 't1');SELECT pg_catalog.ledger_gchain_check('blocks', 't1');如果校验通过,函数返回t,反之则返回f。```与普通表交互从普通表插入数据```create table blocks.tt2 (like u1.t2 including indexes ) ;insert into blocks.tt2 select * from u1.t2;```插入数据到普通表```create table u1.tt2 (like u1.t2 including indexes ) ;insert into u1.tt2 select * from blocks.tt2;```参数改回 off ```su - Ruby/usr/sbin/chroot /var/chrootsource /home/Ruby/gauss_env_filegs_guc reload -Z coordinator -Z datanode -N all -I all -c "enable_ledger=off";
-
505.1 普通用户可以执行 purge recyclebin,但是升级到505.2之后普通用户执行purge recyclebin报错了:Only superuser can do purge recyclebin operation 哪里可以找到新版本和旧版本的区别呢,如何规避这些升级之后的区别的坑呢
-
org.postgresql.util.PSQLException: The authentication type 5 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication type supported by this driver.at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:556)at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:195)at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactoryImpl.java:65)at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)连接Gaussdb库,使用的是<dependency> <groupId>com.huaweicloud.dws</groupId> <artifactId>huaweicloud-dws-jdbc</artifactId> <version>8.3.0</version></dependency>试过:1、在连接的配置参数是将spark.yarn.user.classpath.first、spark.driver.userClassPathFirst、spark.executor.userClassPathFirst三个参数均设置true,但是没啥用
-
数据库使用GaussDB,投标需要互认证证书。如何获取这个证书。
-
想自己搭建学习,请问下开源的opengauss怎么下载
-
在研究gaussdb的时候,发现自带perf性能工具,有一系列perf相关的脚本,比如gsperfserviceinstall.sh,gsperfservicekill.sh,gsperfservicedaemon.sh......等脚本,这些脚本有没有readme或者help文件,最终该如何使用。
-
在GaussDB轻量化安装部署文档中,TPOPS管控安装时配置时钟同步时有说明需要设置服务器时区为UTC,那么想问下这个在数据库服务器上需要设置UTC吗?设置UTC和不设置UTC对数据库的使用会有什么影响吗?
-
在gaussdb中,很多视图都带有query_id,unique_query_id,debug_query_id三个字段。query_id描述为查询语句的ID,unique_query_id描述为归一化SQL id,debug_query_id描述为唯一SQL id。官方文档的描述看不懂,请解释一下3个字段的含义。三个字段有什么区别,有什么联系?分别适用于什么场景?
-
起因是数据库管理平台(TPOPS)节点服务器重启后,微服务启动异常,健康检查不通过,管理平台登录显示服务器内部错误;我就直接重装了管理平台,然后重新执行数据纳管操作,但是任务报错了,报错如下:软件版本:轻量化部署形态 25.1.32实例版本:GaussDB V2.0-8.218.0 请帮助解答,为什么用户初始化会提示权限问题,添加纳管输入的数据库用户(root)和密码是正确的(密码输错不能进入下一步)?
-
请问Gaussdb使用M-Compatibility数据库,推荐使用哪种jdbc驱动?使用mybatis进行insert操作有自增主键的表,使用useGeneratedKeys="true",程序执行时报错,如何解决?分析如下报错:ERROR c.r.c.s.h.GlobalExceptionHandler - [handleRuntimeException,88] - 请求地址'/user',发生未知异常.org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: com.huawei.gaussdb.jdbc.util.PSQLException: [:47520/:29900] ERROR: Unsupported function. Detail: The feature is only supported in distributed database.### The error may exist in class path resource [mapper/system/SysUserMapper.xml]### The error may involve com.ruoyi.system.mapper.SysUserMapper.insertUser-Inline### The error occurred while setting parameters### SQL: insert into sys_user( dept_id, user_name, nick_name, phonenumber, password, status, create_by, create_time )values( ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP )### Cause: com.huawei.gaussdb.jdbc.util.PSQLException: [22.36.112.179:47520/22.36.112.208:29900] ERROR: Unsupported function. Detail: The feature is only supported in distributed database.; uncategorized SQLException; SQL state [0A000]; error code [9088]; [22.36.112.179:47520/22.36.112.208:29900] ERROR: Unsupported function. Detail: The feature is only supported in distributed database.; nested exception is com.huawei.gaussdb.jdbc.util.PSQLException: [22.36.112.179:47520/22.36.112.208:29900] ERROR: Unsupported function. Detail: The feature is only supported in distributed database.at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)at com.sun.proxy.$Proxy118.insert(Unknown Source)at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145)at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)at com.sun.proxy.$Proxy179.insertUser(Unknown Source)
推荐直播
-
华为云码道Skill实战与极速交付,智能开发全链路实战2026/07/22 周三 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;姜浩-华为云HCDG核心组成员
直播深度解读华为云码道6月产品新特性,从Skill市场安装专家技能,带你零距离体验从需求,开发,审查,重构全链路闭环的开发过程。从零构建并交付一个完整项目,让您体验从代码提交到服务上线的“极速”之旅。
回顾中 -
聚开发者之力,创具身新未来2026/07/23 周四 15:00-17:00
张豪杰/程文/王军/刘新春/黄钦开 /张晓天
本次华为云具身智能开发平台CloudRobo培训面向具身智能开发者,带您全流程体验机器人本体R2C小时级接入、环境重建与轨迹生成仿真数据生产、PB级数据管理、数据评测、模型训推、强化学习和Benchmark一键评测等功能,并体验业界主流具身模型应用。
回顾中
热门标签