• [运维管理] 【执行报错】CCN排队导致执行超时canceling statement due to user request
    【问题现象】ERROR: canceling statement due to user request【排查方法】1. 在CN端数据库后台日志 $GAUSSLOG/pg_log中查看都是 SELECT 'x'语句2. 在TOPSQL中排查这些select x语句的block time都在1s以上,duration也为1s说明这些语句都因为排队超时报错结束select * from pgxc_wlm_session_info where query ilike 'select ''x''%' order by start_time desc limit 20;3. 查看当前最大并发数max_active_statements为80【问题根因】问题出现期间单CN活跃会话数85,超过了单CN最大并发数限制80。【解决办法】1. 用户进行业务评估,并发量是否符合预期2. 跟进系统资源适当调整最大并发数
  • [问题求助] 使用\copy导入数据无法处理ascii为00的特殊字符
    使用\copy导入文件数据时,不管文件格式是txt还是csv,当文件中包含ascii为00的字段值时,导入就会失败,感觉会把0x00当做是字符串的结束,然后就没有读取到完整的一行数据,从而导入失败,请问这种问题有没有解决方案?
  • [技术干货] 夯实数据智能底座,华为云GaussDB给世界更优选择
    3月31日,中国数据智能管理峰会DAMS2023在上海顺利举行,华为云数据库首席架构师彭立勋和华为云数据库迁移解决方案架构师刘志俊受邀参会,并在会上分享了华为云数据库的发展战略、最新技术、优秀实践以及一站式迁移解决方案,为企业数字化转型提供一个更优选择。分布式与云原生齐发力,夯实数据智能底座在大会主会场,彭立勋表示,分布式、云原生是当前数据库发展的主要趋势,分布式和云将主导数据库市场的未来。分布式数据库具备大集群规模、弹性伸缩、云化、自治等诸多特性,正引领着数据库管理技术的发展趋势,而云原生数据库因为其具备更高的扩展性、弹性调度等能力,成为云上数据库使用的标准范式。华为云数据库首席架构师彭立勋现场发表演讲彭立勋提到,华为云自主研发的GaussDB是一款基于分布式数据库理论实现的原生分布式数据库,在复杂业务场景中表现更优异。在对数据库要求最为严苛的金融领域,GaussDB由单集群演进为跨中心多集群,真正做到软硬件故障完全隔离、7*24小时服务不间断、双集群下RPO=0。安全方面,GaussDB做到了数据从传输、计算到存储的全流程加密,能够保护数据全生命周期的安全。2022年,GaussDB更是拿下了中国首个数据库领域国际最高级别CC EAL 4+认证,安全技术也由纯软全密态升级为软硬结合全密态,相比其他纯硬件方案性能可提升20%,在安全上已全面超越国外主流数据库产品。面向云原生,彭立勋提到,华为云数据库整合华为公司全栈软硬件资源与能力,围绕Serverless、Regionless、Modeless三大方向带来全新的架构演进。Serverless带来业务无感知的极致弹性,在电商大促、游戏开合服等突发流量的场景下能发挥更大的价值。Regionless突破地域限制实现数据全域可用。Modeless统一入口带来极简体验,支持混合负载,多模兼容。一站式迁移,数据上云更轻松为了解决传统数据库在扩展性、性能等方面的挑战,金融行业正在全面进行分布式核心应用改造。但改造并非易事,在实际改造过程中,金融领域遇到无数挑战,比如语法兼容性、数据一致性、对象迁移、全量+增量迁移、上层应用改造等。华为云数据库迁移解决方案架构师刘志俊现场发表演讲刘志俊表示,为了让客户上云更轻松,华为云数据库全力打造了“GaussDB+UGO+DRS”一站式迁移解决方案,为客户数据库迁移提供了高效、低成本的上云方案。GaussDB聚焦金融政企,架构上着重构筑传统数据库的企业级能力和互联网分布式数据库的高扩展和高可用能力,全方位满足金融客户的业务诉求。UGO负责对源库进行风险和工作量评估,自动转换异构数据库语法,可节省80%的工作量;DRS负责进行源库增量日志解析,全量+增量实时迁移和同步,业务低峰期对数据进行一致性比对,确保数据0丢失,模拟业务流量进行仿真验证,全方位保障客户应用和数据迁移。华为云数据库提供的一站式上云迁移解决方案,既大幅度提升了迁移速度,又对业务无感,还节省了大量迁移成本,是企业核心业务上云的信赖之选。深入实践,助力千行百业数字化转型华为云数据库目前已在2500+中大型企业规模商用,历经金融、政企、泛互联网、游戏、电商、制造等千行百业的锤炼,锻造出了更强大的服务能力。在内部,华为集团流程IT ERP系统基于华为云GaussDB提供的系列创新技术,不仅轻松支撑起ERP系统5倍业务压力性能保持线性,10倍压力下系统不崩溃,新的ERP系统端到端业务效率得到百倍提升。华为云GaussDB还高效支撑起华为终端云服务7.3亿月活用户的日常使用、万亿级数据记录、百万级QPS,大幅提升了全球用户的使用体验。在外部,邮储银行2019年就携手华为云GaussDB启动新一代个人业务分布式核心系统的建设,而且在孵化满足金融核心系统要求的交易型数据库层面取得丰硕成果。新系统可为全行6.5亿个人客户、4万多个网点提供日均20亿笔、峰值6.7万笔/秒的交易处理能力。集结多方力量,产学研用共创未来数据库产业的发展,需要建设良好的生态。华为云数据库持续扩大伙伴生态圈,与200+合作伙伴提供有竞争力的联合解决方案。比如与掌数科技共同打造了面向证券核心业务系统的解决方案,并服务于兴业证券等客户。数据库的发展需要人才。华为紧密融合产学研用,一方面,实现对数据库技术的持续创新,同时联合教育部开展智能基座、新工科、虚拟教研室等项目,与高校共建数据库课程,联合高校教授发布GaussDB教材、教辅等,促进数据库产业未来人才培养。截止目前,华为已经和110多所高校建立合作关系,覆盖3.9W名学生。另一方面,面向从业者,我们还建立了完善的涵盖从入门级到专家级的职业认证体系,以及针对开发者的GaussDB入门级开发者培训认证,全力推进数据库人才的培养。分布式是数据库的未来,云原生是数字化的未来。华为云数据库将聚焦分布式和云原生两大技术赛道,持续注入更领先的技术,自主创新,做企业核心业务云化的智能数据底座,致力于打造世界级数据库,给世界提供一个更优选择,赋能更多行业实现数字化转型升级。
  • [技术干货] 华为云GaussDB践行数字化,护航证券保险高质量发展
    3月31日,由先进数通与华为联合开展的“7+1”系列银行业数字化转型实践交流活动北京站圆满落幕。活动汇聚金融科技先锋企业、金融行业专家和金融机构,共同探讨证券行业保险类业务场景的创新与发展。华为云数据库解决方案架构师章哲在会上围绕华为云GaussDB多年来的技术探索和应用实践进行了分享。加强数字基建,数据库核心竞争力尤为重要随着互联网、云计算、大数据等新技术的飞速发展,全球数据量和数据并发处理量呈现爆发式增长,远远超出了传统关系型数据库的处理能力。而分布式数据库能更好地应对海量存储、高并发、容灾运维等方面的需求,越来越受到金融证券保险类企业的青睐。加上近年来国际环境复杂多变,信息安全成为关系到国家安全和社会稳定的重大问题,推进国家关键基础设施的技术创新,已经上升为国家战略之一。数据库作为企业业务数据、核心数据最重要的载体,构建起核心技术竞争力,刻不容缓。华为云GaussDB积厚成势,满足企业的严苛要求章哲表示,数据库技术的创新发展,是一项系统化的工程,需要数据库厂商具备独立的技术创新能力、持续地支持运维服务的能力,需要有完善的方法论和产品生态,满足企业未来长期的业务需求。所以,选数据库本质上还是在选厂商。华为在数据库领域持续投入超过15年,汇聚全球1000多名数据库精英人才,面向政企核心业务负载打造了GaussDB企业级分布式数据库,具备完全独立的技术创新能力,着重构筑极致可用、极致性能、极致安全、极致易用的数据服务,满足集团业务连续性要求。GaussDB采用了行业先进的全并行分布式架构,支持1000+超大分布式集群和PB级海量存储,具备应对海量并发事务处理与复杂查询混合负载的能力;同城跨AZ、两地三中心部署满足金融监管,同城双集群RPO=0做到了业界领先,确保数据0丢失,带来极致高可用。在安全上,GaussDB已经做到了数据从传输、计算到存储的全流程加密,实现数据全生命周期内的安全保护,从而帮助企业彻底解决数据库云上隐私泄露及第三方信任问题,还通过了数据库领域国际CC EAL4+安全认证,是当前国内数据库在该领域获得的首个最高级别认证。张开怀抱,联合各方力量共建产业生态数据库是一个生态型的产品。章哲说,华为云GaussDB非常重视生态的建设,在产业领域,积极参与国内数据库标准体系的建设,与业界共享华为在数据库研究领域的技术实践和前沿探索;在人才培养上,联合教育部开展智能基座、新工科、虚拟实验室等项目,与高校共建数据库课程、出版书籍、开展培训认证,建立完善的人才培养体系;在伙伴领域,GaussDB也与越来越多的伙伴建立起了合作关系,为企业持续提供有竞争力的联合解决方案。聚焦客户场景,分享优秀实践经验华为云GaussDB已经在2500多大客户的核心业务中规模商用,包括工商银行、建设银行、邮政储蓄银行、交通银行等国有大行、多家股份制银行和保险证券公司,积累了非常成功的实践经验。工商银行依托华为云GaussDB数据库进行核心交易系统分布式转型,形成了以分布式数据库为基础的金融级数据库转型解决方案,实现同城园区级和Region级故障场景下RPO=0、RTO<60秒的高可用能力和异地灾备能力,还构建起整套自动化工具链,实现大规模数据的双向实时同步和异构数据库自动迁移,节省了80%的人工工作量。邮储银行2019年就携手华为云GaussDB启动新一代个人业务分布式核心系统的建设,在孵化满足金融核心系统要求的交易型数据库层面取得丰硕成果。新系统可为全行6.5亿个人客户、4万多个网点提供日均20亿笔、峰值6.7万笔/秒的交易处理能力。兴业证券基于华为云GaussDB成功打造了新一代法人清算系统。新系统支持日间实时操作与查询及日终批量作业的高可靠处理,清算总耗时降低了15%;实现RTO=0,RPO<30秒的高可用能力,最大化保障业务连续性。该实践充分验证了传统集中式数据库向分布式数据库转型的可行性,在法人清算系统领域的创新探索具有极高的推广价值。数字经济时代的到来,让我国数据库市场蒸蒸日上,如何正确选择适合企业的数据库,是一项重要的课题。章哲表示:我们主张深耕数字化,以技术创新驱动业务高质量发展。在金融数字化转型的关键时刻,华为云GaussDB将一如既往坚持投入、做好数据库,并联合更多合作伙伴及客户一起持续打磨数据库,为科技创新提供坚实数据底座。
  • [技术干货] 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(31 —— 40)
    接上篇 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(1 —— 30)cid:link_131. 自定义的函数,存储过程存在后台哪个目录?误删的数据怎么找回自定义的函数和存储过程在后台哪个目录里存在?我先后台修改存储过程,自定义函数怎么操作?我记忆中好像在开发手册中提到,数据delete以后是把数据的一个标识删除了,数据其实还在表里,有没有什么方法可以找回?数据库导出的数据会默认省略整数位的0。知会省略0,例如0.11导出以后就变成 .1了,导入导致各种报错。答:试下闪回功能openGauss=# SELECT * FROM tpcds.time_table TIMECAPSULE TIMESTAMP to_timestamp('2021-04-25 17:50:22.311176','YYYY-MM-DD HH24:MI:SS.FF'); idx | snaptime | snapcsn | timedesc -----+----------------------------+---------+------------------------------------------------------------------------------------------------------ 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 (3 rows)参考:cid:link_0 这个问题是oracle兼容性。想要显示整数位的0的话,可以试下在应用里调用Java的DecimalFormat接口进行设置32. GaussDB执行报错,ERROR:timestampdiff syntas is not supported 有可替换的方法吗答:SELECT extract(year from age( '2012-04-01', '2020-01-01'))*12+extract(month from age( '2012-04-01', '2020-01-01'));33. 异地双活的数据同步,GaussDB有哪些工具可以支撑答:可以用flashSync、DBSync,类似Oracle时代的OGG方案34. GaussDB不支持conflict语法吗GaussDB不支持conflict语法吗?CREATE TABLE t1(dist_key int PRIMARY KEY, a int, b int); INSERT INTO t1 VALUES(1,2,3) ON CONFLICT(dist_key) DO UPDATE SET dist_key = EXCLUDED.dist_key, a = EXCLUDED.a + 1;答:使用ON DUPLICATE KEY UPDATE35. JDBC操作过程中,查询可以,但是新增不行在操作数据库的过程中,查询没有问题,新增会出现以下问题org.postgresql.util.PSQLException: ERROR: dn_6035_6036: relation "t_stat_sjzcgl_zysqd_sqfw" does not exist on DN dn_6035_6036表t_stat_sjzcgl_zysqd_sqfw是有存在的,通过查询是没有问题的答:库查询时需要在表名前加模式名称,就是这张表属于哪个schema(模式),不然查询时可能找不到表。36. GaussDB事务执行过程中报错uncategorized SQLException; SQL state [25P02]; error code [14310]; [10.235.217.215:59972/7.213.119.234:8000] ERROR: current transaction is aborted, commands ignored until end of transaction block, firstChar[B]答:事务中有SQL失败,导致事务aborted。 可以执行 end 把异常的事务结束掉37. 高斯数据库报错,如何解决[ConsumeMessageThread_1] ERROR OmsOrderStatusConsumer:69 - requestContextHolder.begin_error org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: com.huawei.opengauss.jdbc.util.PSQLException: [X.X.X.X] ERROR: cannot execute UPDATE in a read-only transaction答:看你错误信息中的提示,应该是在使用MyBatis的过程中报的错。这个问题我之前也有遇到过情景模拟:假设你的mybatis里面创建了一个Mapper,Mapper中有2个方法,一个aMethod与bMethod,其中A调用B方法,B方法执行数据库操作,加上了@Transactional注解,但是A没有加。这样在执行时,就会报cannot execute UPDATE in a read-only transaction错误问题描述:比如有一个类Test,它的一个方法A,A再调用本类的方法B(不论方法B是用public还是private修饰),但方法A没有声明注解事务,而B方法有。则外部调用方法A之后,方法B的事务是不会起作用的。具体原因:这是由Spring AOP代理造成的,因为只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理。解决方案:同一个类中包含事务的函数A被当前类的另一个方法B调用时,要将B方法也加上@Transactional注解即可38. 高斯表如果有 上亿数据,一般设置几个分区合适答:建议不超过100个39. openGauss有这个函数的替代吗?TO_DATE('AUG-22','MON-YY','nls_date_language = American')答:可以使用to_date(text) 40. oracle new_time函数转高斯写进SP后报错function new_time(timestamp without time zone, unknown, unknown) does not exist答:数据类型不匹配,需要指定数据类型,或者做强制转换
  • [问题求助] 【AICC产品】【CMS功能】CMS报表数据核对问题
    【问题来源】【必填】      湖北农信【问题简要】【必填】      CMS报表相关问题【问题类别】【必填】      CMS【AICC解决方案版本】【必填】     AICC版本 AICC 8.15.0     CTI版本   ICDV300R008C23【期望解决时间】【选填】     尽快解决【问题现象描述】【必填】      虚拟呼叫中心报表:客户认为该报表字段中“系统呼入成功数=IVR呼入成功数+人工呼入数”,实际数据中“IVR呼入成功数+人工呼入数”少于“系统呼入成功数”。客户希望知道数据差异在了什么地方。附件为cms 报表数据,以及话单明细。
  • [问题求助] 高斯数据库 Blob对流不支持问题
    Error  column "job_data " is of type blob but expression is of type bytea.   在做oracle转高斯的时候出现的错误,使用的是springboot框架 ,做定时任务时候出现的错误。blob字段保存上的数据有问题,迁移过去的数据全部被转换成了varchar类型,不能正常读取文件流以及byte类型。
  • [运维管理] Datanode主备不同步或者断连
    周末集群出现大批量告警Datanode主备不同步或者断连,最后导致集群状态失衡,查询后发现集群状态失衡,但是DN主备没有切换,什么原因造成的?查询后发现集群状态失衡,但是DN主备没有切换。
  • [技术干货] OpenGauss中创建唯一索引和创建唯一约束的区别
    今天一个一起搬砖的兄弟同事过来问,为什么他的索引删不掉?我过去看了下:执行脚本:drop index constraint_unique报错如下:执行时出错 确认要继续执行吗? 单击“详细信息”了解详情。   SQL错误码: = 2BP01 ERROR: cannot drop index constraint_unique because constraint constraint_unique on table t1 requires it   Hint: You can drop constraint constraint_unique on table t1 instead.  行号: 19 报错大意是:不能删除索引constraint_unique因为约束constraint_unique在表t1上引用了它。暗示:你可以删除约束constraint_unique在表t1上来代替它。于是我执行drop constraint的语句,删除成功。alter table t1 drop CONSTRAINT  constraint_unique;究其原因,该索引并不是通过create index直接创建的,而是在创建唯一约束的时候顺带创建的。实验发现,OpenGauss在创建唯一约束的时候,同时会创建一个唯一索引,当然在删除唯一约束的同时,也会删除掉创建唯一约束时附带创建的唯一索引;但是在创建唯一索引的时候,并不会同时显式创建一个唯一约束。通过创建索引直接创建的索引,好像有点绕咔咔咔,则可以直接通过drop index的方式删除。再对比下创建唯一索引和唯一约束后,在插入重复数据时的区别:1. 唯一索引:插入重复数据时报错,插入时也报唯一约束冲突(有点奇怪)ERROR: duplicate key value violates unique constraint "idx_unique"   Detail: Key (c1)=(1) already exists.2. 唯一约束:ERROR: duplicate key value violates unique constraint "constraint_unique"   Detail: Key (c1)=(1) already exists.那么约束是否存在呢?我对于增加唯一约束的场景,尝试执行 drop constraint的操作,系统会报错constraint不存在,这说明确实没有创建约束,但还是报唯一约束冲突,有点困惑。执行时出错 确认要继续执行吗? 单击“详细信息”了解详情。   SQL错误码: = 42704 ERROR: constraint "idx_unique" of relation "test" does not exist  行号: 2 请高手方家指正!
  • [Sql迁移] GaussDB 列转行不能用pivot,那该用什么
    列转行,我现在只发现如下两个能用1.  string_to_arraySELECT string_to_array('1,2,3,4,5', ',')2.listaggselect name,string_to_array(listagg(score,',') within group (order by subject), ',') from student group by 1但是像其他数据库的pivot并不能用,求教这个函数应该用什么语法来代替
  • [问题求助] 【香港启德项目】Roma平台接口查询结果显示能否按照脚本中的别命名显示
    1.Roma平台接口查询结果显示能否按照脚本中的别命名显示,不要统一转成小写王斌国/18629429514/wangbinguo@chinasoftinc.com
  • [产品公告] 云数据库GaussDB 混合云部署模式新增可叠加付费特性包公告
    尊敬的华为云客户:首先非常感谢大家对GaussDB数据库的支持与厚爱!为了强化云数据库GaussDB场景化能力,进一步贴近行业,华为云计划对云数据库GaussDB混合云部署模式新增可叠加付费特性包,不同行业的客户可按照行业差异化场景选择叠加特性。具体可叠加的特性包内容如下:序号特性包名称价值1物理灰度升级金融、银行业对数据的安全有着较高的要求,当主数据中心发生故障的情况下,需要保证数据的安全性、业务的连续性,因此需要采取同城跨AZ容灾的方案。主机房灾难的情况下,备机房的数据还具备能继续提供服务的能力。本特性的目的是提供一套支持跨数据中心双集群容灾的解决方案。2多租户面向企业场景及SaaS化软件架构,GaussDB提供相应的多租户能力。支持多个租户共享一个数据库实例,租户资源可通过配置方式管控,实现租户间业务互不影响,租户规格最低可达1U。相比传统方案,可以进一步降低企业使用数据库的成本。3高级压缩高级压缩用于提升数据库存储的资源利用率,是一个全场景的压缩解决方案,包括:TP数据压缩(表、索引)、AP数据压缩、历史数据压缩、REDO/UNDO数据压缩、查询结果集压缩、LOB数据压缩、备份数据压缩等,面向不同场景,提供不同的语义压缩算法支持,相关特性还包括冷热分离、自动负载感知、多存储介质、重删等。高级压缩对业务透明,无需业务进行适配改造,用户仅需针对TP、 AP或历史数据来指定不同的策略即可。数据库会自动维护行级/页面级/表级数据温度,并针对不同温度的数据,使用不同级别语义压缩算法进行数据压缩,大幅度减少空间占用,降低存储成本。4透明数据加密透明数据加密,是数据库在将数据写入存储介质时对数据进行加密,从存储介质中读取数据时自动解密,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,以解决静态数据泄露问题。该功能对于应用层几乎透明无感知,用户可根据需要决定是否启用透明数据加密功能,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,通过透明数据加密功能对数据库的数据文件进行加密,保证用户必须在数据库启动后通过正常途径连接数据库,才可以读取解密后的数据,达到数据保护的目的。5防篡改对用户指定的防篡改表增加校验信息,并记录用户对其数据的操作历史,通过数据和操作历史的一致性校验来保证用户数据无法被恶意篡改。在用户对防篡改表执行DML操作时,系统对防篡改表增加少量额外的行级校验信息,同时记录操作的SQL语句和数据的变化历史。通过特性提供的校验接口,用户可以方便的校验防篡改表中的数据是否与系统记录的操作信息是否一致。账本数据库通过提供对用户数据的操作记录、数据历史变化记录以及易用的一致性的校验接口,方便用户随时校验数据库中的敏感信息是否发生恶意篡改,有效提高数据库防篡改能力。6动态数据脱敏数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。数据隐私保护是数据库安全所需要具备的安全能力之一,可以在一定程度上限制非授权用户对隐私数据的访问,保证隐私数据安全。动态数据脱敏机制可以通过配置脱敏策略实现对指定数据库资源信息的隐私保护,另一方面,脱敏策略的配置也具有一定的灵活性,可以仅针对特定用户场景实现有针对性的隐私保护能力。规划中的特性包如下:序号特性包名称价值1应用无损切换对于事务来说,在异常情况下(如最常见的宕机),由于应用程序无法感知事务当前的状态,很容易发生重复提交等情况,并且由于宕机,导致数据库会话中断。透明事务能力记录当前事务的状态,在主节点出现故障的时候,该事务不会马上结束而是会暂时缓存,等待新主产生之后,将该事务转接到新主之上,并将前面的操作进行回滚,然后重新执行完整的SQL。从外部视角来看,整个主备切换过程中,应用程序只感知到一条update语句变成了慢SQL,但不会接收到连接报错或事务报错,后续应用层就不需要显式执行连接重连和事务重试。华为云会持续投入研发力量,不断提升GaussDB产品能力,丰富可叠加特性,为客户提供更好的服务。同时在数据迁移、SQL语法转换、SQL开发、流量回放等需求的客户可以选用DRS(数据复制服务)、UGO(数据库和应用迁移)、TPDSS工具和流量回放工具来支持。
  • [认证交流] 职业认证和开发者认证什么区别
    研究不明白,华为云的职业认证和开发者认证什么区别啊,哪个是比较难的、或者说含金量更高的呢
  • [技术干货] GaussDB 事务 —— 从入门到精通
    什么是事务TRANSACTION(事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。数据库事务通常包含了一个序列的对数据库的读/写操作。为什么需要事务事务存在的目的主要有两个为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。事务的执行过程当事务被提交给数据库管理系统(DBMS)后,DBMS 需要确保该事务中的所有操作都成功完成,并且其结果被永久保存在数据库中。如果事务中有操作没有成功完成,则事务中的所有操作都需要回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的环境中运行(互不干扰和影响)。四大特性事务具有以下四个标准属性,通常根据首字母缩写为 ACIDAtomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失特性的用途特性用途原子性并发控制,故障恢复隔离性并发控制持久性故障恢复一致性SQL的完整性约束(主键约束、外键约束)常用的并发控制技术有基于锁的并发控制和基于时间戳的并发控制,GaussDB数据库针对DDL语句采用两阶段锁技术,而针对DML语句则采用多版本控制技术(Multi-Version Concurrency Control,MVCC)。GaussDB数据库的故障恢复采用WAL日志的方式来实现,目前主要支持Redo日志,通过Redo日志和MVCC可以保证事务读写的一致性。语法讲解BEGIN: 开始一个事务,事务开始后便会一直执行下去,直到遇到 COMMIT 或 ROLLBACK 命令,不过在数据库关闭或发生错误时,事务也会自动回滚(该命令是 BEGIN TRANSACTION 命令的简写)BEGIN TRANSACTION: 开始一个事务(作用同 BEGIN 命令)COMMIT: 把事务调用的更改保存到数据库中,即事务提交(也可以使用 END TRANSACTION 命令)END TRANSACTION: 结束并提交事务ROLLBACK: 事务回滚,用于撤销尚未提交或保存到数据库的事务命令SQL实战虚拟场景例子:某人要在商店使用电子货币购买100元的东西,当中至少包括两个操作:该人账户减少 100 元商店账户增加100元支持事务的数据库管理系统就是要确保以上两个操作(整个"事务")都能完成,或一起取消,否则就会出现 100 元平白消失或出现的情况。数据准备下面创建一个简单的用户金额表CREATE TABLE PERSON_INFO ( NAME VARCHAR(32) PRIMARY KEY, MONEY INTEGER )然后向表中插入数据(假设商户和购买者的账户上各有100元)INSERT INTO PERSON_INFO (name, money) VALUES ('buyer', 100), ('shop', 100); SELECT * FROM PERSON_INFO;恢复初始值下面每个例子执行完,都要将值恢复成初始值,然后再测试下一个例子UPDATE PERSON_INFO SET money=100普通操作(正常模式)现在模拟购买过程,用户先减款50元,商户再加款50元UPDATE PERSON_INFO SET money = money-50 WHERE name IN (SELECT name FROM PERSON_INFO WHERE name = 'buyer'); UPDATE PERSON_INFO SET money = money+50 WHERE name IN (SELECT name FROM PERSON_INFO WHERE name = 'shop'); SELECT * FROM PERSON_INFO;普通操作(异常模式)用户先减款50元,商户发现是假币,终止了后续交易UPDATE PERSON_INFO SET money = money-50 WHERE name IN (SELECT name FROM PERSON_INFO WHERE name = 'buyer'); -- 发现是假币 这里直接报错,不让它继续执行即可 UPDATE PERSON_INFO SET money = money+50 WHERE name IN (SELECT name FROM PERSON_INFO WHERE name = 'shop'); SELECT * FROM PERSON_INFO;DAS会提示你SQL执行过程中遇到错误,是否继续执行。我们这里为了模拟真实场景,选择“终止执行”接着使用 SELECT * FROM PERSON_INFO 查询结果,可以发现顾客已经扣款,但商户没扣款,这里莫名其妙的顾客钱少了50(这里只是商家觉得是假币,但实际不一定是假币,有可能是真币,只是破了点脏了点)因此,如果没有事务,一旦SQL语句中间出现异常,整个账户系统的收支就不平衡了事务回滚下面,我们使用数据库事务,再来模拟一遍整个流程(注意:不要忘记执行UPDATE语句,将金额还原为初始值)BEGIN TRANSACTION; UPDATE PERSON_INFO SET money = money-50 WHERE name IN (SELECT name FROM PERSON_INFO WHERE name = 'buyer'); -- 发现是假币 这里直接报错,不让它继续执行即可 UPDATE PERSON_INFO SET money = money+50 WHERE name IN (SELECT name FROM PERSON_INFO WHERE name = 'shop'); END TRANSACTION; SELECT * FROM PERSON_INFO;这里同样遇到错误,我们还是跟之前一样,终止执行然后查询时报错了:ERROR: current transaction is aborted, commands ignored until end of transaction block意思是:当前事务被终止, 命令被忽略,直到事务结束原因:如果同一事务中如果某次数据库操作出错了,那么当前事务中这个操作以后的所有命令都将出错。这里由于出现错误,我们不能继续用 END TRANSACTION 对事务进行提交,只能使用回滚命令返回事务前的状态。但是GassDB很奇怪的一点是,使用Rollback并不能执行回滚,让报错消失。只能通过关闭DAS,隔一段时间再打开的方式来解决,个人觉得,这应该是个BUG!另外,自动回滚的设置方法,在华为GaussDB官方文档中有提及,官网文档地址如下cid:link_0有两个重要的参数变量设置方法说明ON_ERROR_ROLLBACK\set ON_ERROR_ROLLBACK on | interactive | off如果是on,当一个事务块里的语句产生错误的时候,这个错误将被忽略而事务继续。如果是interactive,这样的错误只是在交互的会话里忽略。如果是off(缺省),事务块里一个语句生成的错误将会回滚整个事务。on_error_rollback-on模式是通过在一个事务块的每个命令前隐含地发出一个SAVEPOINT的方式工作的,在发生错误的时候回滚到该事务块。ON_ERROR_STOP\set ON_ERROR_STOP on | offon:命令执行错误时会立即停止,在交互模式下,gsql会立即返回已执行命令的结果。off(缺省):命令执行错误时将会跳过错误继续执行。注意:设置只能以命令行的方式进行设置,DAS虽然在内网访问,但由于其使用的是HTTP的连接方式,因此无法使用命令行设置上述参数
  • [技术干货] 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(内容持续更新中......)
    1. 连接 GaussDB 数据库建议使用什么工具开源免费的DBMS,可以考虑 DBeaver破解收费版的,可以考虑 Navicatdata studio连高斯可能会存在报文异常导致连接无法中断的问题,不建议用(2023-02-24)如果是网页版的,直接用华为云DAS即可(https://www.huaweicloud.com/product/das.html)2. GaussDB的支持哪些hint可以参考开发者指南:分布式:cid:link_0主备版:cid:link_13. 数据库存入空字符串会全部被转成NULL,这个能控制不转吗不能。目前默认都是Oracle兼容性,没有单独的参数开关4. GaussDB create sequence有if not exists 的类似写法吗目前没有。create sequence 的语法格式如下CREATE [LARGE] SEQUENCE name [INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE ] [ OWNED BY { table_name.column_name | NONE } ];5. GaussDB中的varchar(n)数据类型中的n是字符还是字节?存汉字的时候报错长度过长VARCHAR(n),变长字符串。PG兼容模式下,n是字符长度。其他兼容模式下,n是指字节长度。要存1个汉字用nvarchar2(1)。NVARCHAR2(n)变长字符串。n是指字符长度。6. GausssDB有select * from DBA_INDEXS这样的视图吗可以使用 select * from pg_indexes。GaussDB大部分都是PgSQL的源码,所以有问题不懂,直接查PG的语法即可7. "cache lookup failed for type XXX"报错什么原因自定义类型失败了,需要重新创建8. GaussDB中文排序使用order by好像是不准确的,应该怎么解决用 nlssort(string text, sort_method text)描述:以 sort_method 指定的排序方式返回字符串在该排序模式下的编码值,该编码可用于排序,其决定了string在这种排序模式下的先后位置。目前支持的sort_method为nls_sort=schinese_pinyin_m和nls_sort=generic_m_ci。其中,nls_sort=generic_m_ci仅支持纯英文不区分大小写排序示例:SELECT nlssort('A', 'nls_sort=chinese_pinyin_m');SELECT nlssort('A', 'nls_sort=generic_m_ci');参考SQL:SELECT * FROM <表> ORDER BY NLSSORT(<待排序的列>, 'NLS_SORT = SCHINESE_PINYIN_M');9. 高斯数据库建表的ddl,如果有分区的话为什么看不到了可以使用select pg_get_tabledef(<表名>)语句查看,如果使用DBeaver视图上是看不到的10. 通过sys.db_tables查询到数据库的全量表信息,但是发现有些表的信息(行数、列数)不是当前最新的,请问有什么方法可以实现表信息定时更新吗可以使用vacuum analyze更新表的统计信息cid:link_2table_name 要统计的表的名称(可以有模式修饰)。 取值范围:要清理的表的名称。缺省时为当前数据库中的所有表。也可以尝试下面SQLuse information_schema;select sum(table_rows) from tables where TABLE_SCHEMA = "test" order by table_rows asc;11. 什么场景会触发GaussDB主备切换主机故障会触发主备切换,故障包括进程重启,磁盘故障,服务器掉电,重启,网络故障等等。升级版本时会重启进程,也会主备切换。可以通过CPU的监控指标判断是否主备切换,主备切换时, 两个节点的CPU会交叉。主机CPU一般比较高,切换时,原来的主机CPU降低,备机升主CPU升高。12. opengauss有行转列的函数吗参考unnest描述:扩大一个数组为一组行返回类型:setof anyelement示例:openGauss=# SELECT unnest(ARRAY[1,2]) AS RESULT;result--------12(2 rows)13. openGauss数据库连接串的参考样例jdbc:opengauss://${DNS1}:8000,${DNS2}:8000,${DNS3}:8000/${database}?targetServerType=master&connectTimeout=3&tcpKeepAlive=true14. GaussDB列存支持物化视图吗astore支持,ustore不支持15. 许多表预估行数为0,并且也没有自动分析,怎么解决执行analyze可以分析全库select pg_autovac_status('table_name'::regclass); 可以找一个没分析的表看下为什么没有触发自动分析16. java连接GaussDB的代码范例连接代码如下:public static void main(String[] args){ // 驱动程序名 String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数据库名scutcs String url = "jdbc:mysql://127.0.0.1:3306/scutcs"; // MySQL配置时的用户名 String user = "root"; // MySQL配置时的密码 String password = "root"; try { // 加载驱动程序 Class.forName(driver); // 连续数据库 Connection conn = DriverManager.getConnection(url, user, password); if(!conn.isClosed()) { //执行你的操作 conn.close(); } } catch(IOException e) { e.printStackTrace(); }}17. 创建索引时报file size exceeds temp_file_limit,怎么处理问题原因SQL查询生成的临时表较大,超过了系统中临时表空间上限(temp_file_limit)104857600KB = 1024102400KB = 102400MB = 1001024MB = 100GBERROR: temporary file size exceeds temp_file_limit (104857600kB)这段错误提示的意思就是:临时文件的大小超出了temp_file_limit字段所设置的大小解决方案查看当前的临时表空间上限并增加该上限1.进入你的DBMS,打开SQL控制台/SQL脚本2.使用 show temp_show_limit 查看当前实例的临时表空间上限(返回结果是以kb为单位的值,就是上面报错时提示的 104857600kB)3.使用 alter role all set temp_file_limit = [$Temp_File_Limit],增加临时表空间上限(单位为kb)4.最后使用 show temp_show_limit 确认修改结果是否生效注意: 如果需要查询的SQL语句只是临时操作,建议您在执行完SQL语句后,将临时表空间上限修改回原始值。否则可能会因为临时表空间过大致使实例磁盘满,进而被锁定。具体还是要根据当前设备的硬件水平、和预估数据量来决定18. 查询JOB用什么办法查询pg_job系统表PG_JOBS系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg_jobs系统表中的时间,当任务到期会触发任务的执行。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。检查定时任务检查数据库定时任务执行情况,确保后台任务正确执行,尤其关心统计信息收集等核心任务。SQL命令如下select job,dbname,log_user,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from user_jobs;查询用户的定时任务(job)信息,确保任务在期望的时间执行成功,这是dba的重要工作之一。SQL命令如下select job_id,dbname,log_user,start_date,last_satrt_date,this_run_date,next_run_date,interval,failure_count from pg_job;19. 已经改了字段类型为date,为什么查询建表语句的时候还是timestamp可以参考下这个文档:cid:link_3A兼容性下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。例如:4字节(兼容模式A下存储空间大小为8字节)创建数据库时,可通过DBCOMPATIBILITY参数指定兼容的数据库的类型,DBCOMPATIBILITY取值范围:ORA、TD、MySQL。分别表示兼容Oracle、Teradata和MySQL数据库。如果创建数据库时不指定该参数,则默认为ORA,在ORA兼容模式下,date类型会自动转换为timestamp(0)。20. Data studio打开显示同一用户不能打开多个实例官网手册上显示 Data Studio 不支持同时打开多个实例本地datastudio工作空间实例锁未删除,需要手工删除安装目录下的.lock文件(关闭datastudio后再删除,或者删除整个用户空间)21. 执行分区报错执行SQLCREATE TABLE list_list( month_code VARCHAR2 ( 30 ) NOT NULL , dept_code VARCHAR2 ( 30 ) NOT NULL , user_no VARCHAR2 ( 30 ) NOT NULL , sales_amt int)PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code)( PARTITION p_201901 VALUES ( '201902' ) ( SUBPARTITION p_201901_a VALUES ( '1' ), SUBPARTITION p_201901_b VALUES ( '2' ) ), PARTITION p_201902 VALUES ( '201903' ) ( SUBPARTITION p_201902_a VALUES ( '1' ), SUBPARTITION p_201902_b VALUES ( '2' ) ));报错内容SQL 错误 [0A000] ERROR: Un-support feature 详细:The distributed capability is not supported currently.原因:分布式暂时不支持二级分区22. 查询的时候偶尔会出息如下报错org.postgresql.util.PSQLException: [***:30814/***:8000] ERROR: dn_6007_6008_6009: snapshot is not owned by resource owner TopTransaction排查方向:看下pg_log/postgresql-xxx.log打印的内核堆栈原因:自动提交读取的就是快照数据,这里出问题了23. 数据API开发sql语句开启预编译后sql报错在测试api的时候发现语句:(current_date - interval '${num}' day),会因为预编译而导致执行sql出错的问题。gaussdb原语句是(current_date - interval '30' day),因为涉及到多个参数且参数类型不同尝试过cast('${num}' as int)方法不成功也尝试过使用’'两个双引号来转义也不行取消勾选预编译后语句是可以正常运行的请问是否还有其他方法可以在满足预编译的情况下成功执行这句话?答:加强制类型转换24. 如何使用java开发对openguass数据库的应用分布式参考:cid:link_4集中式参考:cid:link_525. 查询的时候报如下错误,怎么处理ERROR: canceling statement due to conflict with recoveryDetail: User query might have needed to see row versions that must be removed.Line Number: 1问题原因当备用服务器在WAL流中获取更新/删除,而且该更新/删除将使正在运行的查询当前正在访问的数据无效,在这种情况下将发生此类错误。这种错误出现的主要场景是:备用服务器有长时间运行的查询来查看主服务器上具有重要活动的表。一个示例是主服务器上的管理员在备用服务器正在查询的表上运行DROP TABLE命令。显然,如果在备用数据库上应用了DROP TABLE命令,则备用服务器上的查询无法继续。当在主服务器上运行DROP TABLE命令时,主服务器并不知道备用服务器上运行了哪些查询,因此它不会等待备用服务器上的任何此类查询。当备用服务器上的查询仍在运行时,WAL的更改记录进入备用数据库,从而导致冲突。当冲突的查询很短时,通常希望通过稍微延迟WAL应用进程来使它完成。但是WAL应用进程的长时间延迟通常是不可取的。因此,取消机制具有max_standby_archive_delay和max_standby_streaming_delay参数,它们定义WAL应用进程中允许的最大延迟。一旦超过max_standby_archive_delay或max_standby_streaming_delay指定的延迟,冲突的查询将被取消。这通常会导致取消错误。备用服务器上的查询和WAL重放之间冲突的最常见原因是“早期清理”。通常,PostgreSQL允许在没有需要查看它们的事务时清除旧的行版本,以确保根据MVCC规则可以正确地查看数据。但是此规则只能应用于在主服务器上执行的事务。因此,主服务器上的清理可能会删除备用数据库上的事务仍然可见的行版本。解决方案有以下两种方案可以避免这种查询取消的情况:在备用数据库上设置hot_standby_feedback=on,它将传递信息给主数据库,表示仍然需要表中的特定行,这可以防止VACUUM操作删除最近的死行,因此不会发生清除冲突。它允许备用服务器上的查询能够可靠地完成,但是将导致主服务器上的膨胀现象,当备用服务器上的查询长时间不结束时,此膨胀现象尤为明显。提高max_standby_archive_delay或者max_standby_streaming_delay参数,它允许备用服务器特意增加复制延迟以允许查询的完成。如果备用服务器会频繁的连接和断开连接,您可能需要进行调整以处理hot_standby_feedback未提供反馈的时间段。例如,可以考虑增加max_standby_archive_delay,因此在断开连接期间WAL归档文件中的冲突不会迅速的将查询取消。您还应该考虑增加max_standby_streaming_delay以避免重新连接后新收到的流式WAL条目的快速取消。但如果将它们的值设置的过大(例如1小时),主服务器和备用服务器的状态可能会出现不一致的情况。当备用服务器在WAL流中获取更新/删除,而且该更新/删除将使正在运行的查询当前正在访问的数据无效,在这种情况下将发生此类错误。这种错误出现的主要场景是:备用服务器有长时间运行的查询来查看主服务器上具有重要活动的表。一个示例是主服务器上的管理员在备用服务器正在查询的表上运行DROP TABLE命令。显然,如果在备用数据库上应用了DROP TABLE命令,则备用服务器上的查询无法继续。当在主服务器上运行DROP TABLE命令时,主服务器并不知道备用服务器上运行了哪些查询,因此它不会等待备用服务器上的任何此类查询。当备用服务器上的查询仍在运行时,WAL的更改记录进入备用数据库,从而导致冲突。当冲突的查询很短时,通常希望通过稍微延迟WAL应用进程来使它完成。但是WAL应用进程的长时间延迟通常是不可取的。因此,取消机制具有max_standby_archive_delay和max_standby_streaming_delay参数,它们定义WAL应用进程中允许的最大延迟。一旦超过max_standby_archive_delay或max_standby_streaming_delay指定的延迟,冲突的查询将被取消。这通常会导致取消错误。备用服务器上的查询和WAL重放之间冲突的最常见原因是“早期清理”。通常,PostgreSQL允许在没有需要查看它们的事务时清除旧的行版本,以确保根据MVCC规则可以正确地查看数据。但是此规则只能应用于在主服务器上执行的事务。因此,主服务器上的清理可能会删除备用数据库上的事务仍然可见的行版本。解决方案有以下两种方案可以避免这种查询取消的情况:在备用数据库上设置hot_standby_feedback=on,它将传递信息给主数据库,表示仍然需要表中的特定行,这可以防止VACUUM操作删除最近的死行,因此不会发生清除冲突。它允许备用服务器上的查询能够可靠地完成,但是将导致主服务器上的膨胀现象,当备用服务器上的查询长时间不结束时,此膨胀现象尤为明显。提高max_standby_archive_delay或者max_standby_streaming_delay参数,它允许备用服务器特意增加复制延迟以允许查询的完成。如果备用服务器会频繁的连接和断开连接,您可能需要进行调整以处理hot_standby_feedback未提供反馈的时间段。例如,可以考虑增加max_standby_archive_delay,因此在断开连接期间WAL归档文件中的冲突不会迅速的将查询取消。您还应该考虑增加max_standby_streaming_delay以避免重新连接后新收到的流式WAL条目的快速取消。但如果将它们的值设置的过大(例如1小时),主服务器和备用服务器的状态可能会出现不一致的情况。26. GaussDB怎么查询分区表的索引信息1.pg_partition里有2.或者用pg_get_tabledef查表定义,包含索引创建语句3.或者查询PG_INDEXES视图示例:分区表上的索引分为:本地(局部)索引(local index) 和 全局索引(global index)SELECT n.nspname AS schemaname, --schema名称 c1.relname AS tablename, -- 表名 c2.relname AS indexname, -- 索引名称 s.conname AS conname, -- 约束名称 pg_get_constraintdef(s.oid) AS constraintdef, -- 如果是约束,输出约束定义 CASE WHEN s.conname IS NULL THEN pg_get_indexdef(x.indexrelid) END AS indexdef -- 如果不是约束,输出索引定义FROM pg_index xINNER JOIN pg_class c1 ON c1.oid = x.indrelidINNER JOIN pg_class c2 ON c2.oid = x.indexrelidINNER JOIN pg_namespace n ON n.oid = c1.relnamespaceLEFT JOIN pg_constraint s ON s.conrelid = x.indrelid AND s.conindid = x.indexrelidWHERE (x.indisprimary = true OR x.indisunique = true)AND c1.relkind = 'r'AND x.indrelid >= 16384 AND x.indexrelid > 16384AND (c1.reloptions IS NULL OR c1.reloptions::text not like '%internal_mask%') -- 排除内置对象ORDER BY schemaname, tablename, indexname27. 自定义的函数,存储过程存在后台哪个目录?误删的数据怎么找回?试下闪回功能openGauss=# SELECT * FROM tpcds.time_table TIMECAPSULE TIMESTAMP to_timestamp('2021-04-25 17:50:22.311176','YYYY-MM-DD HH24:MI:SS.FF'); idx | snaptime | snapcsn | timedesc-----+----------------------------+---------+------------------------------------------------------------------------------------------------------ 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 3 | 2021-04-25 17:50:16.12921 | 107327 | time3(3 rows)参考:cid:link_628. 数据库导出的数据会默认省略整数位的0。知会省略0,例如0.11导出以后就变成 .1了,导入导致各种报错这是Oracle兼容性导致的问题。想要显示整数位的0的话,可以试下在应用里调用Java的DecimalFormat接口进行设置29. GaussDB添加索引报错ERROR: temporary file size exceeds temp_file_limit (104857600kB)添加索引要做排序,写临时文件超过了temp_file_limit的限制,可以调大一点,把索引先建上去问题原因SQL查询生成的临时表较大,超过了系统中临时表空间上限(temp_file_limit)104857600KB = 1024102400KB = 102400MB = 1001024MB = 100GBERROR: temporary file size exceeds temp_file_limit (104857600kB)这段错误提示的意思就是:临时文件的大小超出了temp_file_limit字段所设置的大小解决方案查看当前的临时表空间上限并增加该上限进入你的DBMS,打开SQL控制台/SQL脚本使用 show temp_show_limit 查看当前实例的临时表空间上限(返回结果是以kb为单位的值,就是上面报错时提示的 104857600kB)使用 alter role all set temp_file_limit = [$Temp_File_Limit] ,增加临时表空间上限(单位为kb)最后使用 show temp_show_limit 确认修改结果是否生效**注意:**如果需要查询的SQL语句只是临时操作,建议您在执行完SQL语句后,将临时表空间上限修改回原始值。否则可能会因为临时表空间过大致使实例磁盘满,进而被锁定。具体还是要根据当前设备的硬件水平、和预估数据量来决定30. GaussDB的session_timeout参数可以设为0不?我们这边场景需要一个长连接不建议维持长连接,容易导致OOM,每个会话缓存了大量的元数据和执行过的SQL及执行计划信息
总条数:1539 到第
上滑加载中