-
因数据安全的约束,项目数据不能上公有云,请问GAUSSDB支持私有化部署么?具体怎么操作呢?
-
作者:徐戟(白鳝)GaussDB虽然去年4月份才大规模线下销售,仍然在2023年国产数据库的市场上表现出了十分强劲的增长势头。春节前DBAIOPS社区启动了Gaussdb的适配工作,在适配开始前的分析中,我们发现GaussDB的可观测性能力在国产数据库中是比较优秀的。因此对构建GaussDB的智能运维能力信心十足。基于2023年D-SMART适配Oceanbase的分布式运维平台框架,我们很快完成了GaussDB的指标梳理工作,并完成了初步的采集工作。预计在3月底,社区将会上线GaussDB的相关功能。从上图可以看出,GaussDB为运维诊断提供了十分丰富的可观测性数据。通过我们的Collector采集器用低成本的方式采集回来的数据,通过Monitor加工后形成了十分丰富的指标体系。利用左边GaussDB提供的可观测性能力,我们可以为用户提供右边的多种多样的自动化/智能化运维能力。GaussDB分为集中式和分布式两种部署模式,在指标采集方面,分布式环境的采集十分便捷,只需要连接到某一个CN节点上就可以完成所有的数据库层面的采集工作,GaussDB提供的Global_*和Summary_*视图提供了十分全面的指标数据。不过集中式部署模式略微麻烦一些,在Master DN节点中只有自己的指标数据,Slaver的指标数据必须通过只读方式连接到Slaver DN上去单独采集。 可以看出在一个3节点3分区的GaussDB分布式部署模式的数据库中,采集了4000+的指标,这些指标将会有效实现对GaussDB的精益化管理。当前指标的细化工作还在进行中,Monitor会对原始数据进行更为细致的加工,运维专家也会利用这些原始数据通过对GaussDB的风险、容量、状态变化、故障与性能问题等进行细致的分析,并把分析结果也指标化了。因此等产品发布的时候,指标数量可能还会大幅增加。只有把数据库的方方面面都数字化了,真正的智能化运维工具才能有效地为DBA提供指导。纳管GaussDB数据库变得十分简单了,只需要输入某一个CN节点(对于集中式模式是primary DN)的IP地址和端口号,以及可以采集dbe_perf等SCHEMA中的系统视图信息的数据库账号就可以了(不需要超级用户账号)。 通过节点发现可以自动发现所有的服务器与节点,当集群扩容时可以通过该工具来添加被纳管的CN/DN节点,系统也会定期自动扫描集群的变化,自动纳管节点。 现在我们可以在工具中看到GaussDB分布式部署模式和集中部署模式的基本运行状态了。在这个界面中看到的健康模型目前还在优化调整中,最终发布的版本中将会分别针对集中式和分布式部署模式提供物理机高性能/物理机普通模式,云平台高性能/云平台标准模式等不同的健康模型模板。针对不同的部署模式,将会有不同的GaussDB集群的健康模型。同时还会提供GaussDB CN/DN节点的健康模型,因为可观测性能力的差别,GaussDB CN/DN的健康模型与openGauss略有不同。 汇总信息与基本信息界面与普通的集中式数据库并无太大差别。目前我们部署了GaussDB的260版本(5.0.5内核),3个CN节点,3个SHARDING的部署模式。 从逻辑拓扑上我们可以看到3CN+9DN(3*3)+3 CMS+3 GTM+3 ETCD的拓扑结构。如果需要进行分析,我们还可以进一步下钻,对某个CN或者DN进行下钻分析。D-SMART可以把GaussDB集群中的每个CN/DN都当成一个独立的集中式数据库来处理,可以实现类似于Oracle实例的分析和诊断。这样的话集群对象我们更看重的是集群整体的健康、容量、负载等。而对于某个CN/DN对象,可以以细粒度的方式来进行分析诊断,从而更加精准地定位故障。当某个CN/DN对象中发现隐患的时候,系统也会收到告警。这就避免了因为分布式数据库整体可靠性掩盖了底层对象故障的问题。 数据库工具可以让DBA能够在不切换工具的情况下连到数据库上做一些只读查询,这些功能都是从集中式数据库的功能上直接复制过来的。集中式部署模式是没有CN节点和GTM节点的。我们采取了和分布式部署模式类似的管理模式,针对GaussDB集群构建独立的健康模型,并且能够很好地对主从节点的拓扑进行管理。并把RTO/RPO等指标作为关键的健康因素进行管理。而下钻进入DN节点则可以对具体的数据库实例进行管理和分析。接下来我们将为GaussDB完善日检、巡检、SQL审计等巡检工具,并构建故障模型、运维知识图谱等。并为之编写数百个诊断知识点工具。这些工作都在有序推进,大约下个月底,预览版将会在社区上架。希望正在使用GaussDB的,有智能化运维需求的用户与我们联系,我们可以合作在实际生产环境上不断去完善GaussDB的运维工具。一个好的数据库运维工具,绝对不是开发人员在办公室里能做得好的,必须在实际的生产环境中不断用它去解决问题,才能变成真正对DBA有用的工具。
-
一、前言在数据库中构建动态SQL语句是指根据不同的条件或参数创建不同的SQL语句。这通常是为了适应不同的业务需求,提高SQL的灵活性和效率。GaussDB数据库是一款具备高性能、高可用性和高扩展性的关系型数据库,它提供了丰富的功能和工具,支持动态SQL语句的构建。下面我们将介绍如何使用GaussDB数据库构建动态SQL语句。二、构建动态SQL语句的基本步骤和注意事项1、基本步骤分析需求:首先需要明确业务需求,了解需要执行哪些SQL查询操作,并根据需求的不同来动态构建SQL语句。准备参数:根据查询操作的不同,准备相应的参数,如筛选条件、排序规则等。SQL拼接:根据需求和参数,使用字符串拼接方式构建SQL语句。执行查询:使用GaussDB数据库的查询接口,执行构建好的SQL语句并获取查询结果。处理结果:将查询结果进行处理和展示,可以是前端页面或后端接口等形式。2、主要事项避免SQL注入:在拼接SQL语句时,务必注意避免SQL注入的风险,不要直接拼接用户输入的内容。性能优化:对于大规模数据的查询操作,需要进行性能优化,如使用索引、分页查询等方式来提高查询效率。事务处理:如果涉及事务处理,需要使用GaussDB数据库的事务管理功能来确保数据的一致性和可靠性。安全性保障:对于敏感数据的查询操作,需要进行安全性保障,如数据脱敏、权限控制等方式来保护数据的安全。三、GaussDB中执行动态查询语句(示例)GaussDB提供两种方式:使用EXECUTE IMMEDIATE、OPEN FOR实现动态查询。前者通过动态执行SELECT语句,后者结合了游标的使用。当需要将查询的结果保存在一个数据集用于提取时,可使用OPEN FOR实现动态查询。1、方式一:EXECUTE IMMEDIATE--传递并检索值(INTO子句用在USING子句前):CREATE OR REPLACE FUNCTION dynamic_f()RETURNS textLANGUAGE plpgsqlAS $$DECLAREd_id INT := 2;d_name VARCHAR(20);d_salary INT;BEGINEXECUTE IMMEDIATE 'SELECT name,salary FROM company1 WHERE id = :1' INTO d_name,d_salary USING IN d_id;RETURN '姓名:' || d_name || ' , 薪水:¥' ||d_salary;END $$;--执行CALL dynamic_f();主要属性说明: INTO的变量 :用于指定存放单行查询结果的变量。USING IN的变量: 用于指定存放传递给动态SQL值的变量,在SQL拼接时可用占位符,占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的变量一一对应。执行结果:2、方式二:OPEN FOR--使用OPEN FOR打开动态游标来执行CREATE OR REPLACE FUNCTION dynamic_cur()RETURNS textLANGUAGE plpgsqlAS $$DECLAREv_name VARCHAR2(20);v_salary INT;TYPE ref_type IS REF CURSOR; --定义游标类型my_cur ref_type; --定义游标变量BEGINOPEN my_cur FOR 'SELECT name,salary FROM company1 WHERE id = :1' USING '3'; --打开游标, using是可选的FETCH my_cur INTO v_name, v_salary; --获取数据WHILE my_cur%FOUNDLOOPRETURN v_name||'#'||v_salary;FETCH my_cur INTO v_name, v_salary;END LOOP;CLOSE my_cur; --关闭游标END $$;--执行CALL dynamic_cur();主要属性说明'WHILE my_cur%FOUND': 是一个循环控制语句。'my_cur'是一个游标,而'%FOUND'是游标状态。当游标找到符合条件的记录时,这个状态就会为真(也就是说,如果'my_cur%'FOUND为真,那么就继续执行循环中的代码)。当游标没有更多的记录可返回时(或者达到了游标返回的最大记录数),这个状态就会为假,然后循环就会停止。所以,'WHILE my_cur%FOUND'的意思是:当游标'my_cur'还有记录可返回时,就继续执行循环中的代码。执行结果四、GaussDB中的动态非查询语句(示例)其实这个可以简单的理解为非“SELECT语句”,基本写法跟前面的示例类似,下面继续以company1表为例:--使用EXECUTE IMMEDIATE执行动态非查询语句CREATE OR REPLACE FUNCTION dynamic_cur()RETURNS voidLANGUAGE plpgsqlAS $$DECLAREv_id INT := 4;v_name VARCHAR2(10) := 'ZhangSan';v_age INT := 30;v_address VARCHAR2(10) := 'BeiJing';v_salary INT := 30000;v_newname VARCHAR2(10) := 'company4';BEGINEXECUTE IMMEDIATE 'INSERT INTO company1 VALUES(:1, :2, :3, :4, :5)' USING v_id, v_name, v_age,v_address,v_salary;EXECUTE IMMEDIATE 'ALTER TABLE company1 RENAME to ' || v_newname;END $$;--执行CALL dynamic_cur();--查看结果SELECT * FROM company4;执行结果五、小结通过使用GaussDB数据库构建动态SQL语句,数据应用部门可以更好地应对不断变化的数据查询需求,提高应用程序的性能和可维护性。本文主要介绍了如何使用GaussDB数据库构建动态SQL语句的基本步骤和注意事项,并通过实际案例进行了演示,欢迎大家测试、交流。——结束作者:酷哥
-
本文记录升级中主要步骤,生产中升级需要做很多的准备工作,主要步骤具体参考官方的升级指南cid:link_01.root用户登录节点,创建升级目录[zf@mogdb-kernel-0003 dblink]$ gsql -d postgres -p 15400 -r gsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:27 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. [root@mogdb-kernel-0003 dblink]$ mkdir -p /opt/software/gaussdb_upgrade [root@mogdb-kernel-0003 dblink]$ cd /opt/software/gaussdb_upgrade [root@mogdb-kernel-0003 gaussdb_upgrade]$ ls [root@mogdb-kernel-0003 gaussdb_upgrade]$2.下载升级包,并解压下载地址:cid:link_1[root@mogdb-kernel-0003 gaussdb_upgrade]# wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/arm/openGauss-3.0.0-openEuler-64bit-all.tar.gz openGauss-3.0.0-openEuler-64bit-all.tar.gz 100%[======================================================================================>] 107.10M 2.63MB/s in 27s [root@mogdb-kernel-0003 gaussdb_upgrade]# ls openGauss-3.0.0-openEuler-64bit-all.tar.gz [root@mogdb-kernel-0003 gaussdb_upgrade]# tar -xf openGauss-3.0.0-openEuler-64bit-all.tar.gz [root@mogdb-kernel-0003 gaussdb_upgrade]# ls openGauss-3.0.0-openEuler-64bit-all.tar.gz openGauss-3.0.0-openEuler-64bit-om.sha256 openGauss-3.0.0-openEuler-64bit.tar.bz2 openGauss-3.0.0-openEuler-64bit-cm.sha256 openGauss-3.0.0-openEuler-64bit-om.tar.gz upgrade_sql.sha256 openGauss-3.0.0-openEuler-64bit-cm.tar.gz openGauss-3.0.0-openEuler-64bit.sha256 upgrade_sql.tar.gz [root@mogdb-kernel-0003 gaussdb_upgrade]# tar -xf openGauss-3.0.0-openEuler-64bit-om.tar.gz3.进去升级目录,执行升级安装cd /opt/software/gaussdb_upgrade/script [root@mogdb-kernel-0003 script]# ./gs_preinstall -U zf -G zf -X /data1/softwarezf/mogdb/clusterconfig.xml Parsing the configuration file. Successfully parsed the configuration file. Installing the tools on the local node. Successfully installed the tools on the local node. Setting host ip env Successfully set host ip env. Are you sure you want to create the user[zf] (yes/no)? yes Preparing SSH service. Successfully prepared SSH service. Checking OS software. Successfully check os software. Checking OS version. Successfully checked OS version. Creating cluster's path. Successfully created cluster's path. Set and check OS parameter. Setting OS parameters. Successfully set OS parameters. Warning: Installation environment contains some warning messages. Please get more details by "/opt/software/gaussdb_upgrade/script/gs_checkos -i A -h mogdb-kernel-0003 --detail". Set and check OS parameter completed. Preparing CRON service. Successfully prepared CRON service. Setting user environmental variables. Successfully set user environmental variables. Setting the dynamic link library. Successfully set the dynamic link library. Setting Core file Successfully set core path. Setting pssh path Successfully set pssh path. Setting Cgroup. Successfully set Cgroup. Set ARM Optimization. Successfully set ARM Optimization. Fixing server package owner. Setting finish flag. Successfully set finish flag. Preinstallation succeeded.4.执行就地升级或者灰度升级就地升级:升级期间需停止业务进行,一次性升级所有节点。gs_upgradectl -t auto-upgrade -X /data1/softwarezf/mogdb/clusterconfig.xml灰度升级:灰度升级支持全业务操作,也是一次性升级所有节点。gs_upgradectl -t auto-upgrade -X /opt/software/GaussDB_Kernel/clusterconfig.xml --grey切换至数据库用户,我这里是zf,执行升级操作,这里采用就地升级[zf@mogdb-kernel-0003 ~]$ gs_upgradectl -t auto-upgrade -X /data1/softwarezf/mogdb/clusterconfig.xml Static configuration matched with old static configuration files. Performing inplace rollback. Rollback succeeded. Checking upgrade environment. Successfully checked upgrade environment. Successfully started cluster. Start to do health check. Successfully checked cluster status. Backing up current application and configurations. Successfully backed up current application and configurations. Stop cluster with gs_om successfully. Backing up cluster configuration. Successfully backup hotpatch config file. Successfully backed up cluster configuration. Installing new binary. Restoring cluster configuration. Successfully restored cluster configuration. Successfully started cluster. Stop cluster with gs_om successfully. Modifying the socket path. Successfully modified socket path. NOTICE: Failed to set upgrade_mode to 1, please set it manually. Successfully started cluster. copy certs from /data1/mogdbzf/app_compiled to /data1/mogdbzf/app_02c14696. Successfully copy certs from /data1/mogdbzf/app_compiled to /data1/mogdbzf/app_02c14696. Stop cluster with gs_om successfully. Switch symbolic link to new binary directory. Successfully switch symbolic link to new binary directory. Successfully started cluster. Stop cluster with gs_om successfully. Successfully started cluster. Waiting for the cluster status to become normal. . The cluster status is normal. Start to do health check. Successfully checked cluster status. Upgrade main process has been finished, user can do some check now. Once the check done, please execute following command to commit upgrade: gs_upgradectl -t commit-upgrade -X /data1/softwarezf/mogdb/clusterconfig.xml5.检查升级是否成功[zf@mogdb-kernel-0003 ~]$ gsql -d postgres -p 15400 -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=#6.进行提交升级或者回滚一旦提交操作完成,则不能再执行回滚操作。gs_upgradectl -t commit-upgrade -X /data1/softwarezf/mogdb/clusterconfig.xml [zf@mogdb-kernel-0003 ~]$ gs_upgradectl -t commit-upgrade -X /data1/softwarezf/mogdb/clusterconfig.xml NOTICE: Start to commit binary upgrade. Start to check whether can be committed. Can be committed. Start to set commit flag. Set commit flag succeeded. Start to do operations that cannot be rollback. Cancel the upgrade status succeeded. Start to clean temp files for upgrade. Clean up backup catalog files. Successfully cleaned old install path. Stop cluster with gs_om successfully. Successfully started cluster. Clean temp files for upgrade succeeded. NOTICE: Commit binary upgrade succeeded.回滚[zf@mogdb-kernel-0003 ~]$ gs_upgradectl -t auto-rollback -X /data1/softwarezf/mogdb/clusterconfig.xml Static configuration matched with old static configuration files. Performing inplace rollback. Checking static configuration files. Successfully checked static configuration files. Successfully started cluster. Restoring cluster configuration. Successfully rollback hotpatch config file. Successfully restored cluster configuration. Start roll back CM instance. Switch symbolic link to old binary directory. Successfully switch symbolic link to old binary directory. Successfully started cluster. Stop cluster with gs_om successfully. Restoring application and configurations. Successfully restored application and configuration. Restoring cluster configuration. Successfully rollback hotpatch config file. Successfully restored cluster configuration. Clean up backup catalog files. Successfully started cluster. Successfully cleaned new install path. Rollback succeeded. [zf@mogdb-kernel-0003 ~]$ gsql -d postgres -p 15400 -r gsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:27 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=#强制回滚,如果数据库异常,可强制回滚 gs_upgradectl -t auto-rollback -X /opt/software/GaussDB_Kernel/clusterconfig.xml --force转自:https://www.modb.pro/db/391240
-
API概览通过使用GaussDB接口,您可以使用GaussDB的创建实例、删除实例等功能。类型子类型说明GaussDB 接口实例管理包括创建实例、扩容实例磁盘空间、删除实例、查询实例列表、获取指定实例、CN横向扩容、DN分片扩容、重置数据库密码、修改实例名称接口,查询实例组件列表,规格变更,分片节点主备切换、重启数据库实例、查询实例主备平衡状态、查询解决方案模版配置、查询已绑定的EIP列表、若密码效验、绑定公网IP、解绑公网IP、查询实例SSL证书下载地址、查询租户的实例配额接口。参数配置包括修改指定实例参数、获取参数模板列表、获取指定实例的参数、创建参数模版、删除参数模版、查询参数模版详情、复制参数模版、重置参数组、比较两个参数组模版之间的差异、查询可应用实例列表、校验参数组名称是否存在、应用参数模版、查询参数模版的应用记录、查询参数模版的修改历史接口。备份管理包括设置自动备份策略、查询自动备份策略、查询备份列表、创建手动备份、删除手动备份、查询可恢复时间段、恢复到新实例、查询可用于备份恢复的实例列表、根据时间点或者备份文件查询原实例信息接口。引擎版本和规格包括查询数据库引擎的版本、查询数据库规格、查询引擎列表、查询实例可变更规格接口。查询数据库磁盘类型包括查询数据库磁盘类型接口。管理数据库和用户包括创建数据库、创建数据库用户、创建数据库SCHEMA、授权数据库帐号、重置数据库帐号密码、查询数据库列表、查询数据库用户列表、查询数据库SCHEMA列表接口。标签管理包括查询实例标签、查询项目标签、查询预定义标签、添加实例标签接口。磁盘管理包括查询实例存储空间使用信息接口。配额管理包括修改企业项目配额、查询企业项目配额组接口。任务管理包括获取任务信息、查询任务列表、删除任务记录接口。回收站包括设置回收站策略、查看回收站策略、查询回收站所有引擎实例列表接口。
-
实验环境华为云GaussDB云数据库,规则如下:2. 集群拓扑结构,如下:一、分布式架构逻辑架构常用部署方式 部署说明: 1.双AZ采用带第三方仲裁方式部署,即独立Server9网络域 2.4C4D4副本,一共需要9台物理机(4+4+1) 3.DN主备交叉部署,主统一在AZ1 4.主机故障优先在同AZ切换 5.核心组件两个AZ对称,支持跨AZ双活; 二、分片和分区 分片: REPLICATION:表的每一行存在所有数据节点(DN)中,即每个数据节点都有完整的表数据。 HASH:对指定的列进行Hash,通过映射,把数据分布到指定DN。 RANGE:对指定列按照范围进行映射,把数据分布到对应DN。 LIST :对指定列按照具体值进行映射,把数据分布到对应DN。 分区: 如RANGE:类似二级分区,单机上的分区功能 两者关系: 数据分片示例查询节点名称SELECT * FROM pgxc_node where node_type='D';结果如下:postgres=> SELECT * FROM pgxc_node where node_type='D'; node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_port1 | nodeis_central | nodeis_active-------------------+-----------+-----------+---------------+------------+---------------+----------------+----------------+------------------+-------------+-----------+--------------+------------+---------------+----------------+--------------- dn_6001_6002_6003 | D | 40000 | 192.168.0.230 | 40000 | 192.168.0.230 | t | f | f | -1072999043 | 40002 | 40003 | 0 | 0 | f | t dn_6004_6005_6006 | D | 40000 | 192.168.0.193 | 40000 | 192.168.0.193 | t | f | f | -564789568 | 40002 | 40003 | 0 | 0 | f | t dn_6007_6008_6009 | D | 40000 | 192.168.0.122 | 40000 | 192.168.0.122 | t | f | f | 1532339558 | 40002 | 40003 | 0 | 0 | f | t(3 rows)创建组create node group group_dn1_dn2 with(dn_6007_6008_6009,dn_6004_6005_6006);建表到指定组create table test(id int not null) distribute by hash(id) to group group_dn1_dn2;create table test1(id int not null) DISTRIBUTE BY RANGE(id)(slice s1 values less than(10) datanode dn_6004_6005_6006,slice s2 values less than(20) datanode dn_6007_6008_6009,slice s3 values less than(30) datanode dn_6001_6002_6003,slice s4 values less than(40) datanode dn_6001_6002_6003);给test表准备数据insert into test values(1),(2),(3),(4);test表的数据分布查询execute direct on(dn_6001_6002_6003) 'select * from test';execute direct on(dn_6004_6005_6006) 'select * from test';execute direct on(dn_6007_6008_6009) 'select * from test';注意:这里的test表在创建时指定了所属node group,所以该表只在在两个节点上存在。test表的数据分布情况select b.node_name,a.count from(select xc_node_id,count(*) from test group by xc_node_id) a,pgxc_node b where a.xc_node_id=b.node_id;对test1表进行测试insert into test1 values(1),(10),(20),(30),(35),(39);execute direct on(dn_6001_6002_6003) 'select * from test1';execute direct on(dn_6004_6005_6006) 'select * from test1';execute direct on(dn_6007_6008_6009) 'select * from test1';test1是按照range分片,得出重要结论:分片的范围是左闭右开的区间即"[ )"。test1表的数据分布情况:select b.node_name,a.count from(select xc_node_id,count(*) from test1 group by xc_node_id) a,pgxc_node b where a.xc_node_id=b.node_id;数据分区示例创建分片分区表create table test_part(id int not null,age int) DISTRIBUTE BY RANGE(id)(slice s1 values less than(10) datanode dn_6001_6002_6003,slice s2 values less than(20) datanode dn_6004_6005_6006,slice s3 values less than(30) datanode dn_6007_6008_6009,slice s4 values less than(40) datanode dn_6007_6008_6009)PARTITION BY RANGE(age)(PARTITION p1 values less than(10),PARTITION p2 values less than(20),PARTITION p3 values less than(30),PARTITION p4 values less than(40));查看表结构:插入测试数据:insert into test_part values(1,5),(2,9),(10,10),(19,19),(20,20),(30,30);数据分布查询:execute direct on(dn_6001_6002_6003) 'select * from test_part';execute direct on(dn_6004_6005_6006) 'select * from test_part';execute direct on(dn_6007_6008_6009) 'select * from test_part';test_part表的数据分布情况:select b.node_name,a.count from(select xc_node_id,count(*) from test_part group by xc_node_id) a,pgxc_node b where a.xc_node_id=b.node_id; 由此,我们可以看出GaussDB中表是按照分片进行存储,且可在分片下进行分区存储。原文作者:若兰幽竹
-
购买了GaussDB(DWS)并开了集群,是否可以使用Mysql的JDBC驱动并当做Mysql库使用?
-
华为云数据库高校开课代金券申请说明:请发送邮件到huitian2@huawei-partners.com,提供如下信息,您的院校:您的姓名:本次申请额度:可以多批次申请,原则上总额度在2w以内。申请说明:本次开课情况说明(xx届xx课程,备课期or开课期,多少学生,使用时间和时长)同时,提交代金券申请表(可通过下方附件进行下载),具体如下。 代金券填写方法:学校:协议学校名称,如北京大学课程名称:协议课程名称,如数据库原理授课老师:协议课程名称,如张xx开课时间:课程开设时间,如2024.2-2024.7助教人数:协议课程助教人数,如6申请人姓名:授课老师/助教姓名,如张xx账号名、租户ID:获取方式为,访问https://console.huaweicloud.com/iam/?agencyId=0bc8d306f880f2c21f28c01b3710deb1®ion=cn-north-1&locale=zh-cn#/mine/apiCredential链接,打开API凭证,获取账号名和账号ID。本次申请费用(元):本次申请总额。可以分批申请,原则上总额度不超过2w。使用GaussDB建议申请2000,使用TaurusDB建议10000。备注:本次代金券申请所用场景,如备课、课程开设。
-
标题以GaussDB(DWS)开头,言简意赅。选择对应分类,板块选择产品和服务/大数据/数仓GaussDB(DWS),分类选维护宝典下的对应分类(不要选其它)。发帖内容:【问题版本】如果问题涉及版本,需加上版本信息。【问题现象】现象描述必须基于告警、屏幕提示、日志等内容,便于他人通过具体现象描述判断是否属于这类问题。必要时给出截图。【问题影响】描述对集群或业务影响,如查询慢、集群只读、数据库无法使用等。【原因分析】1. 给出准确的故障现象根本原因结论,要求详细、清晰,必要时可分小点描述。2. 不允许出现研发专用词汇(如:产品代码、烧片等),力求言简意赅的表达清楚即可,不用精确到代码甚至函数级别!【措施和方案】给出明确的解决措施,需可以指导用户操作。详细说明在哪个节点操作,如果涉及修改文件,需明确文件路径,如涉及修改参数,需明确参数修改方法和影响。规避措施:1. 如具备除解决方案以外的规避办法,临时性解决方案,需详细描写经过验证的主要规避措施和方法,以便在不能实施解决方案时使用。2. 如果无规避措施请写“无”。【排查方法】涉及排查的需要明确排查方法,防止此类问题再次发生。如不涉及可删除此项。【意见建议】例如升级最新版本,做好主动预防,下专业调优服务等。如不涉及可删除此项。【相关链接】有相关链接可附上,如不涉及可删除此项。
-
在删除用户时,尽管用户没有任何数据对象,但是具有其它表的权限或者schema的usage权限,都阻止删除这个用户。目前我们这个环境还不允许使用cascade参数,因此我们想在用户申请删除用户时提示用户具有哪些权限,目前是通过视图table_privilege查询的,感觉有点慢,大约需要40秒钟(在网页上提示)。语句也特别简单,就是select * from information_schema.table_privileges where grantee='xxx';,感觉没有优化的空间,因此请问还有更快的方法查询用户具有的权限吗?
-
国产cpu比如飞腾和海光上可以运行gaussdb吗 安装包和鲲鹏或者intel使用的安装包是否有区别?
-
当一条sql被执行时,选择正确的计划来匹配查询结构和数据的属性对于好的性能来说绝对是最关键的,因此系统包含了一个复杂的规划器来尝试选择好的计划。 可以使用EXPLAIN命令察看规划器为任何查询生成的查询计划。 explain 查看执行计划,执行计划会显示将怎样扫描语句中引用的表 — 普通的顺序扫描、索引扫描等等 — 以及在引用多个表时使用何种连接算法来把来自每个输入表的行连接在一起。显示中最重要的部分是估计出的语句执行代价,它是计划器对于该语句要运行多久的猜测(以任意的代价单位度量,但是习惯上表示取磁盘页面的次数)。set current_schema to $schema;set max_datanode_for_plan=1; -- 设置为1,打印完整计划explain $sql; -- 不会真正执行SQLexplain verbose $sql; -- 会真正执行SQL,写操作谨慎操作。显示关于计划的额外信息:计划树中每个结点的输出列列表、模式限定的表和函数名、打印统计信息显示的触发器的名称。set enable_fast_query_shipping=off; -- off表示使用分布式框架,即执行计划在CN上生成,然后发送到DN中执行。on表示执行计划在CN和DN上各自生成。set explain_perf_mode = 'normal'; -- explain的显示格式,normal:代表使用默认的打印格式explain performance $sql; -- 会真正执行SQL,写操作谨慎操作explain analyze $sql; -- 会真正执行SQL,写操作谨慎操作传送门:GaussDB(DWS)计划生成原理揭秘 GaussDB(DWS)性能调优系列基础篇二:大道至简explain分布式计划
-
买了一个GaussDB的一主两备,能不能扩容成一主三备,以及怎么操作呢。求解。感谢~!
-
【版本信息】8.2.1【问题现象】使用pg_get_functiondef(func_oid)获取函数定义时,函数中正则表达式的'\'都变成了'\\'【原因分析】系统函数返回值如果是tuple类型,如果有正则表达式,会自动加入转义字符'\'【规避措施】在获取函数定义时,用 select pg_get_functiondef(f.oid).definition 来获取。
-
在GaussDB数据库中,索引是提高查询性能的关键工具。通过创建适当的索引,可以加快数据检索速度,优化数据库性能。本文将介绍如何在GaussDB中创建高性能索引,并讨论一些相关的最佳实践。索引的概念索引是一种数据库对象,用于快速定位表中的特定行。它们提供了一种数据结构,使数据库能够快速找到与查询条件匹配的数据,而无需扫描整个表。索引可以显著提高查询性能,但也会占用额外的存储空间,并可能对数据插入、更新和删除操作产生一些性能开销。创建索引的准则在GaussDB中创建高性能索引时,需要遵循一些准则:选择适当的列:创建索引的列应该是查询中经常用于搜索、排序或过滤的列。选择具有高选择性的列(即具有许多唯一值的列)通常更有效。避免过度索引:每个额外的索引都会占用存储空间,并可能增加维护开销。因此,应避免在不必要的列上创建索引,或创建过多的复合索引。考虑查询模式:了解应用程序的查询模式对于创建有效的索引至关重要。通过分析查询语句和性能瓶颈,可以确定哪些索引将对性能产生最大影响。使用覆盖索引:如果查询只需要从索引中获取数据,而无需访问表中的实际行,则可以使用覆盖索引。这可以进一步提高查询性能。定期维护索引:索引可能会随着时间的推移而变得碎片化,导致性能下降。定期重新构建或重新组织索引可以保持其性能。创建索引的语法在GaussDB中,可以使用CREATE INDEX语句创建索引。以下是创建索引的基本语法:CREATE INDEX index_name ON table_name (column1, column2, ...);其中,index_name是索引的名称,table_name是要创建索引的表的名称,column1, column2, ...是要包含在索引中的列的名称。示例假设有一个名为employees的表,其中包含id、name、age和salary等列。如果经常根据age和salary进行查询,可以考虑创建一个复合索引来优化性能:CREATE INDEX idx_employees_age_salary ON employees (age, salary);这将创建一个名为idx_employees_age_salary的索引,该索引包含age和salary列。最佳实践以下是一些在GaussDB中创建高性能索引的最佳实践:监视查询性能:使用GaussDB提供的性能监视工具来跟踪查询性能。这有助于确定哪些查询需要优化,并确定创建索引的效果。分析查询计划:使用EXPLAIN语句分析查询的执行计划。这可以帮助你了解查询是如何使用索引的,以及是否存在潜在的性能问题。定期评估索引:随着数据的变化,某些索引可能变得不再有效。定期评估现有索引的性能,并根据需要调整或删除它们。测试索引效果:在生产环境中应用索引之前,先在测试环境中测试它们的效果。这有助于确保索引能够提供预期的性能提升,并避免潜在的问题。通过遵循上述准则和最佳实践,你可以在GaussDB中创建高性能索引,从而优化查询性能并提高数据库的整体效率。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签