-
【操作步骤&问题现象】gaussdb 8.0.0.1 里面有没有对比两个表数据是否相同的 函数或方法
-
【功能模块】GaussDB(DWS)驱动在SparkApp中使用问题【操作步骤&问题现象】1、在同一个DWS库及模式下,现有两张结构相同的表,分别称为表A、表B。其中表A有大约160万行数据2、编写简单的SparkApp,依赖 gsjdbc200.jar(driverClass=com.huawei.gauss200.jdbc.Driver)和 gsjdbc4.jar(driverClass=org.postgresql.Driver)首先使用gsjdbc200.jar作为驱动读取A表数据,得到Dataset实例Dataset ds = sparkSession.read().format("jdbc") .option("url", "jdbc:gaussdb://xx.xxx.xx.xx:8000/dwhm") .option("driver", "com.huawei.gauss200.jdbc.Driver") .option("user", "******") .option("password", "**********") .option("dbtable", "表A") .option("numPartitions", 6) .option("lowerBound", 0) .option("upperBound", 1728454) .option("partitionColumn", "id_column") .option("fetchsize", 1024) .load();然后立即再使用gsjdbc200.jar(driverClass=com.huawei.gauss200.jdbc.Driver)作为驱动,尝试将A表数据写入B表ds.write().format("jdbc") .option("dbtable", "表B") .mode(SaveMode.Overwrite) .option("url", "jdbc:gaussdb://10.2.121.11:8000/dwhm") .option("driver", "com.huawei.gauss200.jdbc.Driver") .option("user", "xxxxxx") .option("password", "**************") .option("truncate", true) .option("batchsize", 500) .save();读取到数据后,在开始执行数据写入task时很快就报出如下异常而失败。java.sql.BatchUpdateException: Batch entry 0 INSERT INTO 表B名称 ("po_process_action_id","tenant_id","po_header_id","po_line_id","po_line_location_id","display_line_num","display_line_location_num","version_num","process_type_code","process_remark","processed_date","process_user_id","process_user_name","object_version_number","creation_date","created_by","last_updated_by","last_update_date","storage_time") VALUES ('1155064','20453','194759',NULL,NULL,NULL,NULL,'1','UPDATE',NULL,'2021-07-11 01:14:21+08','859953','华为接口账号','1','2021-07-11 01:14:21+08','859953','859953','2021-07-11 01:14:21+08','2021-09-27 13:47:06+08') was aborted: ERROR: invalid input syntax for type oid: "" Call getNextException to see other errors in the batch. at com.huawei.gauss200.jdbc.jdbc.BatchResultHandler.handleError(BatchResultHandler.java:152) at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2584) at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.executeBatch(QueryExecutorImpl.java:575) at com.huawei.gauss200.jdbc.jdbc.PgStatement.executeBatch(PgStatement.java:879) at com.huawei.gauss200.jdbc.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1580) at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.savePartition(JdbcUtils.scala:654) at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$saveTable$1.apply(JdbcUtils.scala:821) at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$saveTable$1.apply(JdbcUtils.scala:821) at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:935) at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:935) at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) at org.apache.spark.scheduler.Task.run(Task.scala:109) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.huawei.gauss200.jdbc.util.PSQLException: ERROR: invalid input syntax for type oid: "" at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2852) at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2583) ... 16 more表B只是普通的行存表,其中 po_process_action_id 为主键。表内没有名为“oid”的用户定义列。如果换用 gsjdbc4.jar(driverClass=org.postgresql.Driver)作为 write 时的驱动,只相应改动 url、driver 两项option,其它代码不做任何改变,则数据写入可以成功,没有任何问题。使用Spark版本为 2.3.2,程序运行于本地笔记本,原意为简单试一下Spark读写DWS
-
【功能模块】GaussDB (dws), 如何区分一个是表是否是系统 表?【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
1、客户介绍华为商城(VMALL)是华为公司旗下的自营电子商务平台,以最终用户为主要对象,提供华为手机、无线上网设备、平板电脑、配件等系列终端产品和服务,是以营造用户的移动信息生活为服务宗旨的互联网商务平台。云数据库GaussDB(for Redis)作为华为云旗下企业级Redis,致力于为客户提供稳定可靠、超高并发,且能够极速弹性扩容的KV存储服务。GaussDB(for Redis)在VMALL特征工程平台建设中,起到了关键作用。2、业务痛点 VMALL使用了大量的AI和大数据技术,用来支撑智能推荐,精准营销,智能搜索,选品投放等业务的高效开展。 随着业务的快速发展,系统对AI算法模型的需求日益增多。当前的AI开发流程中,“模型训练”和“模型部署”阶段都已经有成熟的平台支撑,唯独“特征数据准备”阶段缺乏通用平台, 导致了“线上推理和线下训练的特征数据不一致”,“各算法模型独立开发,特征生产重复造轮子”,“特征工程投入时间多(占据算法开发耗时的60%-70%)”3个关键问题,严重影响了研发效率,阻碍业务发展。为解决此问题,VMALL大数据团队开始着手建设统一的特征平台。 特征平台的核心部件是特征存储数据库,只有通过统一的特征数据存储,才能改变原有的“数据孤岛”窘境,彻底解决“不一致”,“难共享”,“效率低”3大问题。但也正是由于特征数据库需要承担打通线上/线下多个场景,对接批式/流式多种数据源,满足训练/推理多样消费需求,对特征数据库的选型提出了非常高的要求:需要找到一款数据存储服务,既能提供低成本的海量数据存储并方便扩容,又能保证数据的绝对可靠和服务的高可用;既要满足低时延的线上推理,又要满足高吞吐的线下训练;既能提供简洁的KV接口供下游轻松消费,又要兼容主流的批式/流式处理引擎(Spark/Flink等)供上游快速接入。 经过深入调研,VMALL大数据团队最终选择了GaussDB(for Redis)作为特征数据库,下面就让我们详细看看GaussDB(for Redis)是如何满足上述苛刻要求的。3、解决方案1. 特征平台使用GaussDB(for Redis)的主要流程1)特征生产(抽取、处理、存储)离线特征(静态特征):定时调度Spark作业,从各种数据仓库、数据湖中提取数据,进行特征工程处理后,存入GaussDB(for Redis) 。实时特征(动态特征):Flink消费Kafka,或流式存储中的数据,持续更新到GaussDB(for Redis)中。1)特征消费线上推理:模型已经部署到生产,开始承接业务,需要低时延,高并发的消费数据,从GaussDB(for Redis)中读取数据。线下训练:GaussDB(for Redis)存有最新的特征数据,OBS中存有全量的特征数据。对于使用静态特征的较为简单的模型,可以直接从OBS中获取特征使用。对于使用实时特征的场景(如实时推荐系统),由Flink从Kafka中实时取得用户请求记录,并从GaussDB(for Redis) 查询取得特征,将记录和特征拼接成训练样本,存储到文件中,供线下训练使用。2. 特征平台对GaussDB(for Redis)的核心诉求 结合上述业务场景,总结特征平台对GaussDB(for Redis)的核心诉求如下:序号类别诉求点1业务接口支持简洁的KV接口(不需要范围查询),支持和Spark/Flink快速对接,提升业务开发效率2稳定性作为电商应用的关键支撑系统,需要具备企业级应用的稳定性。如社区Redis存在的fork抖动,oom等问题,需要解决3可靠性特征数据决定了最终给客户的推荐效果,需要确保数据零丢失,强一致4成本特征数据体量庞大,希望采用内存+磁盘混合存储,降低使用成本5性能抗写能力必须强,满足特征数据批量灌库的要求;读取总体要低时延,但非缓存场景,可接受非活跃用户的时延毛刺6可扩展性随着业务发展,特征数据上量很快;扩容要简单,快速,业务影响尽量小3. GaussDB(for Redis)满足特征平台诉求的关键方案1)业务接口 GaussDB(for Redis)兼容社区Redis5.0接口,支持和Spark/Flink Connector的对接,很好的满足了业务的使用需求2)稳定性 GaussDB(for Redis)采用自研内核,解决了社区Redis的fork,oom等老大难问题,具备了企业级应用的稳定性3)可靠性数据零丢失:逐条命令实时落盘,底层三副本冗余存储,无数据丢失风险数据强一致:基于GaussDB公共的共享存储部件DFV,实现三副本强一致,多点访问无脏读风险4)成本 GaussDB(for Redis)实现数据的自动冷热分离,采用内存+SSD的混合存储方案,大幅降低了客户的使用成本。按照VMALL的特征体量测算,亿级用户,每个用户的特征数量是数K-数10K,GaussDB(for Redis)一年的费用仅3W出头,如果选用社区Redis,费用在20W+5)性能 GaussDB(for Redis)采用多线程架构,并且所有节点可以同时支持写入,因此可以较好满足批量灌库的高吞吐写需求。读方面,基于冷热分离方案,热数据常驻内存提供稳定低时延;冷数据读涉及IO交换,存在一定长尾,但可满足VMALL业务要求(目前VMALL线上GaussDB(for Redis)实例读时延平均0.16ms,P99 0.4ms,P9999 1.5ms)6)可扩展性 基于计算存储分离架构,底层数据可被任一节点访问,扩容过程不发生数据拷贝搬迁,因此速度极快;计算节点扩容分钟级完成,存储扩容秒级完成,RTO < 10秒综上,与社区Redis相比,GaussDB(for Redis)提供了更稳定的使用体验,更可靠的数据存储,更低廉的使用成本和更便捷的扩展能力,是更适合像VMALL特征平台这样大规模电商大数据应用的企业级Redis服务。因此,VMALL特征平台最终选择GaussDB(for Redis)作为特征数据的存储服务。4、上线后效果目前VMALL已完成一期的特征数据迁移,包括“特征生产”业务中的“Spark离线特征生产”,以及“特征消费”业务中的“线下训练Flink特征查询”,已迁移到GaussDB(for Redis)。当前GaussDB(for Redis)运行平稳,业务高峰时段时延稳定,能够满足VMALL当前业务要求。其中,读平均时延0.2ms(p99<0.4ms),写入平均时延0.6ms(P99<2ms)。VMALL当前已启动二期的特征数据迁移,计划完成包括“Flink在线特征生成”,“线上推理”等核心业务的接入。5、 总结本文介绍了华为商城(VMALL)在建设特征平台过程中,对特征数据存储服务的选型和应用。由此可见,华为云GaussDB(for Redis)服务在成本,可靠性,可扩展性等方面具有优势,可作为特征数据存储的理想方案,提供企业级的稳定可靠的Redis服务能力。6、附录GaussDB(for Redis)产品主页:https://www.huaweicloud.com/product/gaussdbforredis.html更多技术文章,请关注GaussDB(for Redis)官方博客:https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813
-
问题版本:HCS 8.0.3 DWS 8.1.0.100 管控面430版本问题现象:1.进度:64%2.错误码:DWS.6000问题分析:1.通过集群名查看job 任务进度 RdsIntInstanceTask 的 execution_status is FAILselect task.job_id,task.task_name,task.begin_time,task.listener_num,task.retry_num,task.execution_status from rds_instanceins left join taskmgr_task taskon ins.jobId=task.job_id left JOIN taskmgr_job job on task.job_id=job.job_id where ins.`name` like '%集群名称%' order by task.job_id,task.begin_time;2.cdk中 needDeleteCluster 为false 实力不回滚,登录节点查看日志/home/Ruby/log/cloud-dws-deploy.log 最后一行是 Waiting to chroot finish3.查看xml /opt/dws/xml/cluster.xm 中对应的cooListenIp1,cooListenIp2中有ipv64.查看集群对应额VPC,其中配置了ipv6 问题根因:VPC同时配置ipv4和IPV6存在跨双栈有异常,统一使用ipv4解决方案:重建vpc只配置ipv4,删除集群后重新创建
-
DWS 8.0/8.1 , 目前使用的 ELB 加权最小连接方式来进行负载均衡 。 如下是官方文档。 负载均衡采用的算法。加权轮询算法:根据后端服务器的权重,按顺序依次将请求分发给不同的服务器。它用相应的权重表示服务器的处理性能,按照权重的高低以及轮询方式将请求分配给各服务器,相同权重的服务器处理相同数目的连接数。加权最少连接:最少连接是通过当前活跃的连接数来估计服务器负载情况的一种动态调度算法。加权最少连接就是在最少连接数的基础上,根据服务器的不同处理能力,给每个服务器分配不同的权重,使其能够接受相应权值数的服务请求。源IP算法:将请求的源IP地址进行一致性Hash运算,得到一个具体的数值,同时对后端服务器进行编号,按照运算结果将请求分发到对应编号的服务器上。这可以使得对不同源IP的访问进行负载分发,同时使得同一个客户端IP的请求始终被派发至某特定的服务器。 问题: 1. 通过当前活跃的连接数来估计服务器负载情况的一种动态调度算法 ---- 当前活跃连接是指DWS的 active ,idle in transaction 状态的连接 ? idle连接不算 ? ELB 是通过连接是否有网络信号判断是否活跃的 ? 2. 加权最少连接就是在最少连接数的基础上,根据服务器的不同处理能力,给每个服务器分配不同的权重 ----- ELB 是如何知道服务器的处理能力 ? 是需要手工单独配置 ?
-
【漏洞描述】OpenSSH的漏洞(CVE-2021-41617) 该漏洞由于OpenSSH 6.2到8.7的sshd(8)未能正确初始化,当sshd(8)在执行AuthorizedKeysCommand和AuthorizedPrincipalsCommand时,未能正确的进行初始化,AuthorizedKeysCommandUser或AuthorizedPrincipalsCommandUser指令被设置为以非root用户身份运行,但是这些指令会继承sshd(8)启动时的所属组的权限,根据系统配置的不同,继承的组可能会让辅助程序获得意外的权限,导致权限提升。【问题影响】 当前已知集群内版本都是使用OS自带的原生OpenSSH做的适配,OpenSSH升级到7.2版本会有ups转义的问题,升级到7.9会导致增删CN有问题。所以是不支持升级OpenSSH的。【残留疑问】 故想知道在不进行对OpenSSH升级的情况下,该漏洞对当前GaussDB版本集群有什么影响?
-
1. IAM user already exists 原因: 创建资源租户子用户成功,但插入res_resuser表失败。 解决方案:沟通IAM侧获取资源租户bk_{regionId}开头的子用户的ak,sk,密码,子用户的userID,手动插入。
-
1. IAM user already exists 原因: 创建资源租户成功,但插入res_tenant表失败。 解决方案: 方法1 沟通IAM侧删除该资源租户,将res_tenant表中`vmPwdUpdateTime` 字段改为 timestamp NULL DEFAULT CURRENT_TIMESTAMP,重新创建集群。 方法2 沟通IAM侧获取资源租户的ak,sk,密码,子用户的userID,手动插入,重新创建集群。2. OBS桶名invalid 原因: 创建资源租户桶的时候。桶名超过64位限制(新版本已解决,存在于8.0.1.100老版本)。 解决方案: 升级到DWS管控面最新版本。 注:rdsbucket.cn-north-7.dws.xxx桶存在于资源租户名下,在rms数据库中rds_backup,rds_restenant表中有记录。
-
版本:HCS 8.0.3 DWS 8.1.0.100 场景一HCSO DWS 8.1.1.100 场景二现象:1.进度 32%失败2.错误码:DWS.6000分析:1.登录rms查看job及task进度 RdsCreateInstance FAIL2.根据jobId 登录dwscontroller容器查看日志 BMS.0047 ,有日志 root value is illegal 根因:系统盘是本地盘,参数配置不合理解决方案:修改cdk参数,场景一:enableBMSRootValume 为true后重启dwscontroller容器,重新下发集群场景二:enableBMSRootValume 为false,设置底层规格参数osVolumeSize 为0,如果没有则增加该参数或者设置cdk参数bms.volume.root.size为0
-
版本:HCS 803 DWS 8.1.0.100HCS 802 DWS 8.1.0.3现象:1.进度40%2.错误码:DWS.6000分析:1.登录rms数据库task走到RdsPingInstanceManagerIpTask时FAIL2.登录dwscontroller容器,根据获取到的jobId,查看日志 ERROR信息:Check null connect refuse3.CDK参数中needDeleteCluster 置为false 关闭回滚开关,失败时,回滚实例,登录iBMC查看信息4.bmc信息显示: Warning:Cloud not boot Warning:/dev/disk/by-uuid/xxxxxxxxxxxxxxxxxx does not exist Warning: Boot has failed,To debug this issue add "rd.shell rd.debug" to the kernel command line. 判定是raid卡驱动缺失5.联系一线获取硬件信息raid卡信息:SmartRaid 3152,8.1.0.101版本的镜像没有对应的raid驱动根因:8.1.0.101版本的镜像没有对应的raid驱动解决方案:申请使用8.1.1.2版本镜像以及instance中的软件包,插件包,具体操作看替换方案连接:https://support.huawei.com/enterprise/zh/cloud-computing/hcs-dws-service-pid-251527524/software/254155349?idAbsPath=fixnode01%7C22658044%7C7919788%7C9856606%7C2515275248.0.2 8.1.0.3 arm:https://support.huawei.com/enterprise/zh/cloud-computing/hcs-dws-service-pid-251527524/software/253420001?idAbsPath=fixnode01%7C22658044%7C7919788%7C9856606%7C251527524替换方案:1.将fcd的/home/pkg目录下的DWS ARM X86镜像文件都进行替换,替换为当前需要注册的镜像。 1)上传 压缩包: DWS_ARM_OLAP_BMS_V_20210616095336.tar.gz DWS_X86_OLAP_BMS_V_20210617103018.tar.gz 2)删除原来的镜像文件2.(8.1.0.3需要手动注册镜像)由于serviceOM手动注册镜像需要将镜像传入公共镜像桶,需要找人要公共镜像桶的登录信息,比较麻烦。直接使用工步进行镜像注册。 https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=1819263.(FCD适用)在FCD后台使用命令重跑任务 “注册DWS BMS业务镜像”重新注册镜像 命令: bash /opt/rootscripts/fcdscripts/retry_step.sh run -i 任务id 任务id从FCD中DWS安装工程工步界面获取 如果DWS的安装工程被删除,重新创建一个,并将包校验等安装之前的工步全部走完,(LLD也要上传),最后到安装的步骤,不要启动,直接找到SUBTASK id,使用上述命令重试。 可能遇到的问题:Failed to establish a new connection:[Errno -2]Name or service not known 分析是dns信息丢失,恢复方案:FCD后台 cat /etc/resolv.conf 配置自动化平台中的dns_ntp_om_ip_01/dns_ntp_om_ip_02,添加上后可以ping通4.在serviceOM的镜像资源处找到刚刚注册的镜像ID,记录下来5.把下载Public_Cloud***Instance包解压,并把所有文件都上传到dws-instance-regeionId桶里。 此处分两种存储服务:obs和swift,下面分别列出来,两种存储都需要获取桶名和对应用户的ak/SK信息 第一步:获取信息 桶信息:CDK参数中的instance.obsBucketName, AK/SK:op_svc_dws用户的登录信息,从rms库rds_obs_info表中获取 select * from rds_obs_info /G; 登录数据库请参考 DWS 登录指南 https://bbs.huaweicloud.com/forum/thread-150183-1-1.html第二步:上传包 1) obs:使用obs工具上传,比如OBS Browser 下载地址:https://developer.huaweicloud.com/tools#section-2,关于工具的使用请参考用户指南:https://support.huaweicloud.com/browsertg-obs/obs_03_1000.html,在obs服务界面下载, 遇到问题请联系obs技术支撑 2) swift:使用udstool.jar上传 a.命令如下: echo "${obs_ak} ${obs_sk} ${file_name} 1 ${obs_url} ${obs_port} uploadobject ${bucket_name}" | java -jar udstool.jar 参数说明: ${obs_ak} : 为op_svc_dws用户对应的ak,sk,从在rds_obs_info表,为表中authority为readOnly属性的数据的ak列。 ${obs_sk}: 为op_svc_dws用户对应的ak,sk,从在rds_obs_info表,为表中authority为readOnly属性的数据的sk列,获取的为密文,需要就解密 ${file_name}:需要上传的文件名, 单个文件执行,每次上传一个文件 ${obs_url}:CDK参数中的obs.endpoint 中的域名或者ip ${obs_port}:CDK参数中的obs.endpoint 中的端口 ${bucket_name}:CDK参数中的instance.obsBucketNam或者rds_obs_info表中readOnly属性的桶的桶名 b.udstool.jar的获取 1) 在fcd后台,使用root用户把Instance软件包(Public_Cloud_Solution_DWS_Instance_*.zip)上传到HCSD节点的/tmp目录下 2) 使用root用户登陆HCSD节点,执行如下命令解压缩软件包。执行如下命令,最终在/tmp/instance/ 目录下获取udstool.jar及安装包 cd /tmp/ rm -rf /tmp/instance/ && mkdir /tmp/instance/ unzip Public_Cloud_Solution_DWS_Instance_*.zip -d /tmp/instance/ cd /tmp/instance/ mkdir /tmp/instance/tmp/ tar xvf *-guestAgent-*.tar.gz -C /tmp/instance/tmp/ tar xvf /tmp/instance/tmp/*-mgntAgent.tar.gz -C /tmp/instance/tmp/ cp /tmp/instance/tmp/mgntAgent/udstool.jar /tmp/instance/ rm -rf /tmp/instance/tmp/6.导入xml配置,登录serviceOM,进度到数据仓库服务的serviceOM界面,配置管理--》xml配置--》导入xml配置,下拉选择对应的版本,比如 8.1.1.2 ,确定7.录入版本配置信息,配置管理--》版本配置--》 版本选:8.1.1.2 正常 1)新增软件包,对应8.1.1.2的软件包; 2)录入镜像信息,填3注册的镜像id或者4拿到的id; 3)录入插件信息,录入8.1.1.2对应的插件包-- 结束
-
【操作步骤&问题现象】根据产品文档提供的regr_avgy(Y, X)描述:因变量的平均值 (sum(Y)/N)返回类型:double precisionregr_avgx(Y, X)描述:自变量的平均值 (sum(X)/N)返回类型:double precision如 传值 1,2 regr_avgy会返回1 regr_avgx会返回2。使用存在问题不满足现有使用,是否有求双值平局值函数?
-
GaussDB 300 怎么创建安全管理员和审计管理员??
-
-
三类语句不受全局并发控制参数 max_active_statements 的限制: 1. 内部逻辑触发语句,例如系统视图内部逻辑、gs_clean、CM等工具执行逻辑等。2. 管理员执行的语句。3. 存储过程及事务内语句。 问题 : 1. max_active_statements 无法限制存储过程 ,用户使用 call proc_name() 或 exce proc_name() 方式 或 select * from proc_name() ; 都不会受到限制 ? 只要是访问存储过程, 无论通过什么形式运行 ? 不受限制是指执行的存储过程个数 ? 为什么控制不了 ? 2. 如果将一个不用传参的存储过程包装成VIEW , 用户再加工或直接查询VIEW , 这时是否能控制view 访问的并发 ? 如上问题,是在当前交付,制造,供应等领域已经有很多这样的查询用法, 有些应用甚至 40% 左右的查询都是通过存储过程传参进行 。
上滑加载中
推荐直播
-
华为云码道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华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签