• [热门活动] 【数仓专题直播有奖提问】DTSE Tech Talk 技术直播 NO.43:看直播提问题赢华为云定制U型按摩枕、华为云定制POLO衫等好礼!
    中奖结果公示感谢各位小伙伴参与本次活动,本次活动获奖名单如下:请各位获奖的伙伴在9月19日之前点击此处填写收货地址,如逾期未填写视为弃奖。再次感谢各位小伙伴参与本次活动,欢迎关注华为云DTSE Tech Talk 技术直播更多活动~直播简介【直播主题】备份恢复全掌握,数仓数据更安全【直播时间】2023年9月13日 19:00-20:30【直播专家】李文鑫  华为云EI DTSE技术布道师【直播简介】大数据时代,数据的备份恢复是一项不可忽视的系统工作。相对于集群级备份恢复海量的文件操作,物理细粒度备份恢复能够从更小的粒度、以更少的数据文件操作,对数据库对象进行备份与恢复。GaussDB(DWS) Roach工具提供了丰富的物理细粒度备份恢复功能,帮助您更加精确高效地备份恢复指定数据,为您的数据安全保驾护航。直播链接:cid:link_1活动介绍【互动方式】直播前您可以在本帖留下您疑惑的问题,专家会在直播时为您解答。直播后您可以继续在本帖留言,与专家互动交流。我们会在全部活动结束后对参与互动的用户进行评选。【活动时间】即日起—2023年9月14日【奖励说明】评奖规则:活动1:直播期间在直播间提出与直播内容相关的问题,对专家评选为优质问题的开发者进行奖励。奖品:华为云定制U型按摩枕活动2:在本帖提出与直播内容相关的问题,由专家在所有互动贴中选出最优问题贴的开发者进行奖励。奖品:华为云定制POLO衫更多直播活动直播互动有礼:官网直播间发口令“华为云 DTSE”抽华为云定制棒球帽、填写问卷抽华为云定制保温杯等好礼分享问卷有礼 :邀请5位朋友以上完成问卷即可获得华为云定制钢笔礼盒。老观众专属福利:连续报名并观看DTT直播3期以上抽送华为云DTT定制T恤。【注意事项】1、所有参与活动的问题,如发现为复用他人内容,则取消获奖资格。2、为保证您顺利领取活动奖品,请您在活动公示奖项后2个工作日内私信提前填写奖品收货信息,如您没有填写,视为自动放弃奖励。3、活动奖项公示时间截止2023年9月7日,如未反馈邮寄信息视为弃奖。本次活动奖品将于奖项公示后30个工作日内统一发出,请您耐心等待。4、活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。5、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。6、其他事宜请参考【华为云社区常规活动规则】。
  • [SQL] useOldAliasMetadataBehavior
    useOldAliasMetadataBehavior这个参数在mysql里是:是否使用别名返回。目前DWS不支持useOldAliasMetadataBehavior参数,并且没有类似功能的参数。
  • [性能调优] agg算子倾斜
    这里框住的AGG倾斜在哪里啊?怎么判定的倾斜?单纯的因为Atime吗?还是有什么其他因素?
  • [其他] GaussDB(DWS)管控面之Event服务节点过载告警
     【问题现象】     OC页面出现EventService服务节点过载告警提醒 【常见版本】        全版本    【分析原因】             告警原理 :dbs-event是多个服务告警上报OC的统一服务,当出现短时间大量请求访问该服务时就会出现服务节点过载告警。 【处理办法 】      1、登录CDK服务升级查找dbsevent服务配置搜索如下两个配置olc.custom.flow.rateLimit=?、olc.custom.admission.qps=?修改后升级。       2、修改这两个配置分别根据需求来扩大,例如原来配置10很小就扩大到100,原来配置100就扩大到200。       3、升级该服务后手动重启pod参数生效(kubectl delete pod XXX -n namespace)。 
  • [其他] GaussDB(DWS)【集群升级】升级失败报xxx Cannot open : permission denied文件没权限
    问题现象   升级失败,查看$GAUSSLOG/om/gs_upgarexxx.log gs_localxxx.log日志有报错:       /DWS/manager/app       [GAUSS-50227] xxx Cannot open : permission denied版本信息      8.0.1.100等低版本原因分析    $GAUSSHOME下有gscgroup_root.cfg文件root权限导致升级失败处理方法   1.对应日志中查看哪些单节点都有报错   2.逐个节点修改/DWS/manager/app 下root属主的文件属主为Ruby   3.然后重试
  • [性能调优] 请问下盘控制参数都包含哪些算子的下盘?
    1.限制全局限制下盘数据量 单个线程的下盘大小,一般这个值乘以并发数不要超过可用空间的20%,单位KB,默认单DN磁盘10%,其他局点有使用300G,建议使用前查询topsql近期最大下盘大小再进行配置。 gs_guc reload  -Z coordinator -Z datanode -N all -I all  -c "temp_file_limit =307200000" 2.对应资源池限制下盘数据量不超过100G。 gs_ssh -c "gs_cgroup -S class_a  -G workload_a2 -E "spillsize=102400000" -a" 问题:1.请问下盘算子是否只有这几类:Hash(VecHashJoin),Agg(VecAgg),Sort(VecSort),Material(VecMaterial),SetOp(VecSetOp),WindowAgg(VecWindowAgg)。2.insert 落盘大小是否受这两个参数影响?
  • [其他] 容灾后roach进程残留
    1.通过查询show进程的父进程,排查到为管控面mppdb-showProgress.sh脚本调用2.mppdb-showProgress.sh为定时任务启动,定时任务为管控面设置3.容灾未在管控面停止,而是在后台用命令形式停止的,所以定时任务并未取消,导致每隔一分钟就会执行show进程4.取消定时任务恢复,但后台还有少量残留的show进程,排查发现是页面停留在容灾界面,为正常现象。
  • [其他] 备份常见咨询问题
    备份是否有加密方式?无加密方式如何在容灾环境中更换节点的硬件?要避免在主集群备份或者备集群恢复的期间升级,其他时间对容灾备份无影响
  • [集群&DWS] 【通信】集群通信概述
    本帖主要介绍下集群内部通信的架构以及基础内容,帮助大家更好的理解通信模块。DWS通信总览上图为DWS集群整个通信模型的预览图集群部署形态:GTM:全局事务管理器(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳等全局唯一的信息。CM名为集群管理。一个系统中各个组件需要智能的自动化协同工作,离不开集群管理系统。CM组件主要分为四个子模块:cm_server:集群管理的大脑,整个管理系统的仲裁者,系统中只有一个,主备架构,系统中常驻的服务进程,多线程架构。主要收集cm_agent返回的各个实例(GTM主备、CN、DN主备从)状态信息,从而通过分析给出谁是主谁是备,什么时候需要failover切换,什么时候需要重建DN。cm_server的另一个作用就是接收客户端cm_ctl发送的命令,使得cm_ctl可以管理整个集群。cm_agent:集群管理的实际执行者,接收cm_server的命令后,操作本地的各个实例,顾名思义,cm_agent的分布与集群物理机数量相关,每台物理机一个cm_agent,常驻进程,多线程架构。负责各个实例的启动、停止、主备switchover、备机failover、仲裁主备等命令的下发。任何一个实例(包括cm_server进程)因异常停止后,cm_agent检测到即会重新拉起。om_monitor:这是一个神奇的进程,作用非常简单,就是启动集群后如果cm_agent异常停止后,它会拉起cm_agent。由于任何一个实例终止后由cm_angent拉起,cm_agent终止后,由om_monitor拉起,那么问题来了,om_monitor挂掉后,谁来拉起呢?然而操作系统有一个功能叫crontab,只要把任务按要求写入这个服务中,它可以定时检测某个任务,如果不存在便拉起。这样便完成了一个完全自动化的管理。om_monitor是系统中常驻进程cm_ctl:一个集群操作的客户端工具,可以用来启动、停止和管理整个MPPDB集群。主要是通过将用户命令发送给cm_server,由cm_server分析控制整个系统的行为。非常驻进程,执行完命令后即退出。CN:协调节点(Coordinator Node)。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。DN:数据节点(Datanode)。负责存储业务数据(支持行存、列存、混合存储)、执行数据查询任务以及向CN返回执行结果。每个物理节点上有0或1个CN,2个或以上主DN一般查询的执行流程(蓝色线条):1.客户端连接CN,CN连接所有DN,生成并下发执行计划2.每个DN连接所有DN通过网络做数据重分布3.DN本地做数据加工,将结果集返回给CN4.CN将数据聚合加工后返回客户端连接100DN规模集群100并发场景下CN需要的链接=并发数*DN数=100*100=1万DN需要的链接数=并发数*每并发stream线程数*DN数>10万CN通信框架CN和DN通过postgres.conf配置文件读取端口并由postmaster线程监听客户端执行查询主要流程:1.客户端向CN的监听端口发起连接;2.CN的postmaster线程accept连接,创建postgres线程并将连接交给新线程处理;3.客户端下发query;4.postgres线程生成计划下发给其他CN/DN,结果原路返回;5.客户端关闭连接时,CN的postgres线程退出;CN与DN建连和客户端与CN建连流程基本相同。Pooler连接池Pooler连接池解决了CN与DN创建postgres线程产生的开销Pooler连接池中的每一个连接都对应在其他CN/DN上的一个postgres线程连接池以DB+USER为key分割为不同的pooler,每个pooler中保存了与其他节点连接的数组。CN的工作线程需要连接其他节点时,按照自身的DB+USER选择正确的pooler,并从中获取已有的链接查询结束后,CN的postgres线程并不会归还连接,连接可以用于当前session的下一个查询session正常退出时,CN的postgres线程归还连接到pooler,CN的postgres线程退出,连接对应的DN上的postgres线程并不会退出,处于ReadCommand中,等待复用后CN新的postgres线程发起任务CN执行select * from pg_pooler_status; 可以查看到pooler连接池中的所有连接;每一个连接对应到某一个进程(node_name)的某一个线程(remote_pid);in_use为t表示这个连接正在被本CN的某个线程(tid)使用,为f表示空闲连接等待复用;remote_pid为对端进程的线程号,可以用于匹配DN上的pg_stat_activity和pg_thread_wait_status视图;fasock为CN进程连接对应的socket,可以使用“ lsof -p CN进程号 | grep fdsock ”查找连接;图片中未展示的session_params可以用于检查连接已设置的参数;如遇通信相关问题,可参考案例尝试解决,如不能解决或者不够完善请留言!【通信】现网通信问题定位套路其余内容后续慢慢补充。。。。。。
  • [运维管理] GaussDB数据库的元数据及其管理简介
    一、前言GaussDB是一种分布式的关系型数据库,元数据(表、列、视图、索引、存储过程等对象)是其重要的一部分。元数据是指描述数据的数据,包括数据的定义、结构、属性、关系等信息。本文以GaussDB物理数据库为主,结合元数据的概念简单介绍一下相关内容。 二、元数据简介 1、元数据定义 按照传统的定义,元数据(Metadata)是描述数据的数据。元数据主要记录数据库应用系统中模型的定义、各层级间的映射关系、监控数据库应用系统的数据状态及ETL的任务运行状态等。在数据库应用系统中,元数据可以帮助数据库管理员和开发人员非常方便地找到其所关心的数据,并用于指导其进行数据管理和开发工作,提高工作效率。 2、元数据分类 元数据可根据不同的维度进行分类,按用途的不同,可以分为两类:技术元数据(Technical Metadata)和业务元数据(Business Metadata)。 技术元数据是存储关于数据库应用系统技术细节的数据,是用于开发和管理数据库应用系统使用的数据。技术元数据即为技术资产,显示数据库、数据表、数据量的数量及其详情。 业务元数据从业务角度描述了数据库应用系统中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够“读懂”数据库应用系统中的数据。业务元数据包含业务资产和指标资产,业务资产显示业务对象、逻辑实体、业务属性的数量及其详情,指标资产显示业务指标及其详情。 3、数据库元数据管理 元数据管理是对数据采集、存储、加工和展现等数据全生命周期的描述信息,帮助用户理解数据关系和相关属性。数据库的元数据指的是关于数据库对象(如表、列、索引、视图、存储过程等)的信息,这些信息描述了这些对象的结构和属性。并且最终目标是服务于数据库应用系统的高效实施(开发、管理、维护等)。 三、GaussDB数据库的元数据管理 1、GaussDB数据库的元数据管理 通过登录GaussDB提供的“数据管理服务(DAS)” 工具,进入“库管理(Schema列表/对象列表/元数据采集)”主页面,可进行相关元数据的基础管理(如下图)。 GaussDB数据库对象列表: 图片 GaussDB数据库元数据采集(DAS工具内置功能): 图片 Tip:对象列表数据来自实时查询(最多显示10000条),对数据库有一定的性能消耗,建议开启元数据自动采集 2、通过“SQL + 系统表/系统视图/系统函数”的方式管理(采集)元数据 1)获取表、视图及表字段等信息 (1)PG_GET_TABLEDEF(tablename)系统信息函数,获取表定义信息。 SELECT * FROM PG_GET_TABLEDEF(‘test_1’) 图片 返回类型:text。说明:pg_get_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments信息。对于表对象依赖的group、schema、tablespace、server等信息。 (2)ADM_TABLES视图存储关于数据库下的所有表信息。主要字段:表的所有者、表名、存储表的表空间名、表的估计行数、是否为临时表等 SELECT * FROM ADM_TABLES; 图片 (3)DB_ALL_TABLES视图存储当前用户所能访问的表或视图。主要字段:表或视图的所有者、表或视图的名称、表或视图所在的表空间。 SELECT * FROM DB_ALL_TABLES; 图片 (4)DB_TABLES视图存储当前用户可访问的所有表。主要字段:表的所有者、表名、存储表的表空间名、表的估计行数、是否为临时表等。 SELECT * FROM DB_TABLES; 图片 (5)ADM_TAB_COLUMNS视图存储关于表和视图的字段信息。数据库里每个表或视图的每个字段都在ADM_TAB_COLUMNS里有一行。主要字段:表的所有者、表的名称、列名、列的数据类型、列的字节长度等。 SELECT * FROM ADM_TAB_COLUMNS; 图片 (6)DB_TAB_COLUMNS视图存储了当前用户可访问的表和视图的列的描述信息。主要字段:表的所有者、表的名称、列名、列的数据类型、列的字节长度等。 SELECT * FROM DB_TAB_COLUMNS; 图片 2)获取定时任务信息 MY_JOBS系统视图获取其定义信息。主要字段:作业创建者、作业执行者、作业对应的数据库名称、开始执行时间、结束时间、运行状态等。 --获取定时任务信息 SELECT * FROM MY_JOBS; 图片 3)获取索引信息 PG_INDEXES系统视图获取表中的索引信息 -- 根据表名获取对应的索引信息 SELECT schemaname ,tablename ,indexname ,tablespace ,indexdef FROM PG_INDEXES WHERE TABLENAME = 'sell_info_full' AND INDEXNAME IS NOT NULL; 图片 4)获取存储过程、函数、触发器等信息 DB_SOURCE视图存储当前用户可访问的存储过程、函数、触发器的定义信息。该视图同时存在于PG_CATALOG和SYS schema下。 主要字段:对象的所有者、对象名字、对象类型(function, procedure, trigger)、存储对象的文本来源等。 SELECT * FROM DB_SOURCE; ADM_SOURCE视图存储关于数据库下的所有存储过程、函数、触发器的定义信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS schema下。 SELECT * FROM ADM_SOURCE; 图片 GaussDB数据库元数据的获取/采集主要是以系统表、视图、函数等方式获取,其元数据不止包含TABLES、VIEWS、COLUMNS、SOURCE、JOB,还包括USERS、COMMENTS等。具体可根据实际业务需要进行采集管理。 四、小结 元数据管理从技术角度,元数据管理着企业的数据源系统、数据平台、数据仓库、数据模型、数据库、表、字段以及字段间的数据关系等技术元数据。从业务角度,元数据管理着企业的业务术语表、业务规则、质量规则、安全策略以及表的加工策略、表的生命周期信息等业务元数据。从应用系统角度,元数据管理为数据提供了完整的加工处理全链路跟踪,方便数据的溯源和审计,这对于数据的合规使用越来越重要。通过数据血缘分析,追溯发生数据质量问题和其他错误的根本原因,并对更改后的元数据进行影响分析等。 GaussDB数据库的元数据管理是数据库系统管理工作的核心之一。它可以帮助用户更好地管理和维护数据库,提高数据的安全性和可靠性,减少数据丢失和损坏的风险。同时,元数据管理还可以帮助用户更好地理解和使用数据库,提高工作效率 。
  • [技术干货] GaussDB数据库存储过程介绍
    文章目录 一、前言二、GaussDB 中的定义三、存储过程的使用场景四、存储过程的使用优缺点五、存储过程的示例及示例解析1、GaussDB 存储过程语法格式2、GaussDB 存储过程语法示例3、存储过程的调用方法七、总结一、前言 华为云数据库 GaussDB 是一款高性能、高安全性的云原生数据库,在数据库领域处于领先地位。而在 GaussDB 中,存储过程是一个不容忽视的重要功能。本文将深入介绍 GaussDB 存储过程的使用场景、使用优缺点、示例及示例解析、调用方法等方面,为读者提供全方位的指导与帮助。 存储过程是一个可重用的、批处理的 SQL 语句代码块,可以包含多条 SQL 语句,通常用于执行复杂的数据操作、提高数据库的性能和安全性,以及简化数据库应用程序的开发和维护。在 GaussDB 中,存储过程的使用可以使数据库应用程序更具灵活性、数据完整性更高、执行速度更快。 二、GaussDB 中的定义 商业规则和业务逻辑可以通过程序存储在 GaussDB 中,这个程序就是存储过程。存储过程是 SQL、PL/SQL、Java 语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 三、存储过程的使用场景 存储过程是一种储存在数据库中的预编译的程序,它被定义为一系列的 SQL 语句,并且被用来执行一系列的数据库操作。在实际运用中,存储过程可以提高性能、提高开发效率,同时也具备良好的安全性能。 1、下面列举几个存储过程的适用场景 复杂任务处理:存储过程可以用于一些需要处理复杂任务的场景,例如一个较为复杂的 SQL 语句,需要处理多个条件和大量的数据,使用存储过程可以提高效率。数据持久化:存储过程可以在服务器端创建和存储处理逻辑,而客户端通过调用存储过程即可处理需要的数据。数据访问权限管理:存储过程可以通过设置不同的访问权限来提高数据访问的安全性。 2、存储过程特点:频繁的、重复性、可封装、易管理。复杂的数据事务处理,可以使用存储过程实现事务的一致性和数据完整性,同时提高执行效率。对于常用的查询,可以把它们封装成存储过程,并将其缓存到内存中,在每次执行时,不需要从磁盘中读取数据,提高查询速度。四、存储过程的使用优缺点 在使用存储过程时,我们需要充分了解其使用优缺点,从而在实际开发过程中进行有针对性的选择,下面罗列了一些常见的存储过程的使用优缺点。 1、优点:高效率、可复用、可维护 在执行大量的操作时,存储过程可以减少数据库客户端与数据库的通信次数,从而提高了执行效率。在多次使用同一函数时,存储过程所需要的内存资源和 CPU 时间较少,因此,存储过程可以被看作一种可复用的数据库对象。在维护和升级方面,存储过程具有良好的维护性,可以被视为一种良好的 API,简化系统的维护过程。存储过程的安全性和可维护性更高,减少了数据库维护的工作量。 2、缺点:难度较高、对数据库依赖性强存储过程需要使用专门的 SQL 软件进行开发,所以对开发人员的技能水平要求比较高,并且使用错误可能会抛出不可预知的异常。存储过程涉及到多个数据库对象,使用不当有可能产生不可预知的结果。当数据库结构发生变化时,存储过程也需要进行相应调整,因此,存储过程对数据库的依赖性比较强。开发和维护存储过程需要一定的技术水平,对于小型数据库来说,使用存储过程的必要性较小。存储过程的执行需要对存储过程进行编译,对于频繁修改的存储过程,可能会影响数据库的性能。五、存储过程的示例及示例解析 1、GaussDB 存储过程语法格式 CREATE [ OR REPLACE ] PROCEDURE procedure_name [ ( { [ argname ] [ argmode ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] [ { IMMUTABLE | STABLE | VOLATILE } | { SHIPPABLE | NOT SHIPPABLE } | {PACKAGE} | [ NOT ] LEAKPROOF | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} | COST execution_cost | SET configuration_parameter { [ TO | = ] value | FROM CURRENT } ][ ... ] { IS | AS } plsql_body / –说明:定义存储过程,在 SQL 语句末,需要输入 “/” (执行)。 参数说明 •OR REPLACE 当存在同名的存储过程时,替换原来的定义。 •procedure_name 创建的存储过程名称,可以带有模式名。取值范围:字符串,要符合标识符的命名规范。 •argmode 参数的模式。须知:VARIADIC 用于声明数组类型的参数。取值范围:IN,OUT,INOUT 或 VARIADIC。缺省值是 IN。只有 OUT 模式的参数后面能跟 VARIADIC。并且 OUT 和 INOUT 模式的参数不能用在 RETURNS TABLE 的过程定义中。 •argname 参数的名称。取值范围:字符串,要符合标识符的命名规范。 •argtype 参数的数据类型。可以使用 % ROWTYPE 间接引用表的类型,或者使用 % TYPE 间接引用表或复合类型中某一列的类型。取值范围:可用的数据类型。 ・IMMUTABLE、STABLE 等 行为约束可选项。各参数的功能与 CREATE FUNCTION 类似,详细说明见 CREATE FUNCTION •plsql_body PL/SQL 存储过程体。须知:当在存储过程体中进行创建用户等涉及用户密码相关操作时,系统表及 csv 日志中会记录密码的明文。因此不建议用户在存储过程体中进行涉及用户密码的相关操作。 说明:argname 和 argmode 的顺序没有严格要求,推荐按照 argname、argmode、argtype 的顺序使用。 2、GaussDB 存储过程语法示例 我们来看几个具有代表性的 GaussDB 数据库存储过程示例,以进一步了解其编写和使用方式。 示例一: 下面是一个简单的 GaussDB 存储过程示例: –创建一个存储过程。 CREATE OR REPLACE PROCEDURE prc_add ( param1 IN INTEGER, param2 IN OUT INTEGER ) AS BEGIN param2:= param1 + param2; dbe_output.print_line('result is: '||to_char(param2)); END; / –调用此存储过程。 SELECT prc_add(2,3); –删除存储过程 DROP PROCEDURE prc_add; 解析:上面的代码是创建了一个名为 prc_add 的存储过程,该存储过程有两个参数,一个输入参数 param1 和一个输入 / 输出参数 param2,数据类型均为整型(INTEGER)。在存储过程的主体中,对输入 / 输出参数 param2 进行了修改,将其值赋为 param1 + param2。在调用存储过程时,输入 2 作为输入参数 param1 的值,3 作为输入 / 输出参数 param2 的值。最后,存储过程的结果输出到 dbe_output 控制台,显示 “result is: 5”。 总的来说,这个存储过程的功能是将输入参数 param1 与输入 / 输出参数 param2 的值相加,并将相加后的结果输出。它可以在程序中多次使用,以简化代码。 示例二 –创建一个存储过程,将带着调用它的用户的权限执行。 CREATE TABLE tb1(a integer); CREATE OR REPLACE PROCEDURE insert_data(v integer)SECURITY INVOKER AS BEGIN INSERT INTO tb1 VALUES(v); END; / –调用此存储过程。 CALL insert_data(123); –查看结果 select * from tb1; –删除存储过程 DROP PROCEDURE insert_data;解析:上述代码实际上创建了一个带有一个输入参数的存储过程 insert_data,并将其定义为以调用者的权限来运行。当调用该存储过程时,将传递一个整数参数作为输入,该参数将插入一个新行到 tb1 表中,该新行的值为该整数。然后通过执行 select 语句查看 tb1 表中的所有数据行。执行完整段代码后,将看到只有一行数据,该行的值为 123,这是由 insert_data 存储过程插入的。 3、存储过程的调用方法 存储过程的调用方法主要有两种:通过客户端请求调用和通过触发器自动调用。通过客户端请求调用通常是手动调用,通常使用以下两种方法调用存储过程: 1)CALL 语句 CALL stored_procedure_name(…) 2)SELECT 语句 SELECT stored_procedure_name(…) 通过触发器自动调用通常是在特定操作的情况下自动执行存储过程。例如,当插入一条记录时,可以设置触发器来自动执行存储过程。 七、总结 本文详细介绍了 GaussDB 存储过程的使用场景、使用优缺点、示例及示例解析、调用方法等内容。使用存储过程可以提高效率、可维护性,同时具备良好的安全性能。在使用存储过程之前,我们需要充分了解其使用优缺点,从而在实际开发过程中进行有针对性的选择。只有深入了解 GaussDB 的存储过程的使用方法和技巧,才能在开发过程中得心应手,更好地配合 GaussDB 实现高效的数据管理和业务处理。 对于需要频繁重复执行的 SQL 语句,我们可以将其封装成一个存储过程,方便管理和提高效率。当存储过程执行达到一定规模时,我们需要注意存储过程的维护和优化,以确保存储过程的执行性能。作为一个高可靠性的全球化分布式关系型数据库,华为云数据库 GaussDB 提供了丰富的存储过程支持,为存储过程的开发、管理和执行提供了更多的优化策略和高可用性保障。
  • [其他] gstack卡住、以及存在僵尸进程处理步骤
    问题背景1.gstack卡住当我们SQL在执行时可能存在一些dn上线程不响应信号的情况,通过等待视图发现大量节点都在等单一的DN节点,连接dn节点数据库查询活跃视图,并按时间倒排第一个语句如果存在dn上能查到cn上查不到,大概率是出现dn上线程不响应信号的情况,当遇到这类问题时我们先进行打印dn的线程的堆栈信息,通过queryid打印该SQL的等待视图,获取该SQL的lwtid,在该节点沙箱外gstack lwtid 打印堆栈,gstack执行卡住可以按本案例进行处理。2.存在僵尸进程在集群状态异常时,执行该命令ps -ef|grep defunct,可以查看是否存在僵尸进程,若存在僵尸进程按照本案例进行处理。处理步骤1.gstack卡住1)我们通过ps -ef|grep dn文件路径 可以找到进程pid, 通过cat /proc/该dn进程pid/stack,可以打印os进程的堆栈方便后续问题复现和排查,下图以dn_6001故障为例。图12)ps -ef|grep gdb 找到卡住的gstack进程使用kill -9 gstack进程pid 结束进程3)kill -9 该dn进程pid/stack2.存在僵尸进程1)执行该命令ps -ef|grep defunct,可以查看是否存在僵尸进程2)我们通过ps -ef|grep 存在僵尸进程的dn文件路径 可以找到dn进程pid, 通过cat /proc/该dn进程pid/stack,可以打印os进程的堆栈方便后续问题复现和排查,同上图1。3)后续节点重启参考如下案例:https://bbs.huaweicloud.com/forum/thread-147714-1-1.html
  • [集群性能] 不合适的index nestloop导致的性能裂化
    【 背景介绍】DWS中支持index nestloop形式的计划,这类计划适合的场景是一张表或关联结果(A)较小,与另一张表(B)关联时,关联条件能走另一张表的索引,此时可以通过nestloop遍历A的结果,每一条结果通过索引在B取出对应的数据,起到加快查询的效果。【 版本信息】813【 问题现象】+【 原因分析】在实际使用中,可能遇到估算偏小走了index nestloop,实际结果A数据量很大,导致多次扫索引效率低于直接查出数据做hash join,从而出现性能裂化的问题。【 处理方法】面对这种情况可以session 级别关闭enable_index_nestloop,使其走hashjoin提升执行效率 8.1.3及以后版本可以通过参数hint语句级设置,配置方法见产品文档配置参数的hint章节https://support.huaweicloud.com/performance-dws/dws_10_0030.html。当然在某些极限调优场景,A的结果较小,同时B表直接扫描结果较大,关联条件在B有较好过滤性的索引,在未走index nestloop时可以使其走index nestloop,以提升查询性能。
  • [互动交流] 数据是如何存储到数据仓库服务的?
    能否讲解下数据是如何存储到数据仓库服务的?
  • [应用案例] tuple concurrently updated
    并行更新表的一个元组1、我们都知道数据库有行锁,也就是两个事务并发更新一个普通表的一行其中一个事务会阻塞等待直到另一个事物提交然后继续执行。第二个事务会覆盖第一个事务的结果。2、当并发更新系统表时:比如GRANT USAGE ON SCHEMA schema1 TO user2;这个授权语句会更新系统表pg_namespace当并发将同一个schema的权限给别的用户时,首先赋权的事务会执行成功commit之后第二个事务会报tuple concurrently updated3、原因:系统表和普通表的并发更新不一样,详细过程见下图
总条数:2746 到第
上滑加载中