- 博客(210)
- 收藏
- 关注
原创 GaussDB-容灾记录删除
容灾任务创建失败或结束成功后,用户可以选择删除容灾记录。删除容灾记录只是删除元数据库中的容灾记录信息,不对容灾实例做任何操作。容灾任务状态为创建失败或已结束任务成功。
2025-02-27 10:12:49
195
原创 GaussDB-gs_cgroup
若删除的Workload Cgroups位于Class Cgroups的高层(1层是最高层),则需调整低层的Cgroups的层级,重建新的Cgroups附属的线程加载到新的Cgroups。普通用户指定“-c”和“-S classname”可以创建新的Class Cgroups,如果再指定“-G groupname”则创建属于Class Cgroups的Workload Cgroups,新的Workload Cgroups位于Class Cgroups的最底层(4层是最底层)。取值范围为1-99。
2025-02-27 10:10:16
705
原创 GaussDB-计划内应用无损透明
为实现GaussDB计划内维护对应用程序的透明性,新增GNS服务。当应用程序调用JDBC接口首次向数据库实例中的任意节点建立连接时,JDBC驱动会与GNS服务建立数据库实例状态订阅链路。当GNS检测到数据库实例状态发生变化,通过订阅链路将状态变化事件发送给JDBC驱动,事件处理线程收到任务后,对受到影响的连接进行管理和迁移。
2025-02-27 10:09:28
766
原创 GaussDB-SPM计划管理
业务数据的变化、数据库版本的升级等场景可能导致SQL的执行计划发生变化,且这种变化对SQL的执行可能带来性能的正向收益,同样也可能带来显著的性能劣化。为了将这种不确定的变化变为确定正向的变化,需要增加一个SPM(SQL Plan Management)组件。如所示,SPM处于SQL引擎中,且处于SQL引擎的两大核心组件优化器和执行器之间。SPM整体流程Outline管理是SPM中最基础的组件,主要负责将一个具体的计划转化为一个具体的Hint集合,或者将一个具体的Hint集合转换为一个具体的计划。
2025-02-27 10:08:45
594
原创 GaussDB-逻辑复制
逻辑复制由两部分组成:逻辑解码和数据复制。业务或数据库中间件将会对逻辑日志进行解析并最终实现数据复制。支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力,因此不足以支撑与异构数据库间并网运行实时数据同步的诉求。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。GaussDB提供了逻辑解码功能,通过反解xLog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。
2025-02-26 09:26:53
214
原创 GaussDB SQL调优:建立合适的索引
所有调优手段都是围绕资源使用开展的。比如做典型点查询的时候,可以用seqscan+filter(即读取每一条元组和点查询条件进行匹配)实现,也可以通过indexscan实现,显然indexscan可以以更小的代价实现相同的效果。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。很明显,执行计划中存在SubPlan,并且SubPlan中的运算相当重,即此SubPlan是一个明确的性能瓶颈点。
2025-02-26 09:26:30
259
原创 GaussDB云数据库SQL应用系列-定时任务管理
GaussDB数据库定时任务主要可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等,它是指在指定的时间间隔内自动执行一次或多次SQL语句的程序。GaussDB数据库兼容Oracle定时任务功能主要通过DBE_TASK高级功能包提供的二次封装接口实现(另可参见GaussDB提供的基础接口PKG_SERVICE,此接口也可实现定时任务创建),主要包括创建定时任务、任务到期自动执行、任务删除、修改任务属性(任务id、任务的关闭开启、任务的触发时间、触发时间间隔、任务内容)等。
2025-02-26 09:24:46
694
原创 GaussDB技术解读系列:数据库迁移创新实践
数据库的选型除了要看数据库本身的能力外,能否很平滑地从其他数据库迁移到GaussDB,也是很多企业考量的关键因素。SQL审核大家更为熟悉,很多大的企业都会进行探索和实践,但对于GaussDB来说,由于是纯自主创新的分布式数据库,很多企业的开发人员和DBA还不熟悉GaussDB的SQL语法,也没有制定较为完善的SQL编程规范,很多第三方SQL审核工具也没有针对GaussDB的审核能力,这种情况下,我们结合UGO成熟的SQL解析器,以及多个项目中的SQL调优实践,孵化出了GaussDB数据库的SQL审核能力。
2025-02-26 09:23:33
872
原创 GaussDB备份恢复组件
云原生数据库默认支持一级备份,一级备份是分布式存储Page Store基于append only实现的快照功能,快照数据保存在本集群,用户可以配置开始一级备份的时间段、频率以及保留时间,由OM_Server根据集群的负载等数据生成备份计划。用户可以设置开启二级备份,一级备份数据保存在本集群,会占用用户生产集群的空间且全闪环境下费用较高,同时为了提高备份数据的可靠性,云原生数据库提供二级备份将备份数据及日志保存在OBS等远端存储上。备份和恢复PITR主要是为了应对人为失误、硬件故障和自然灾害等。
2025-02-26 09:22:50
179
原创 GaussDB Join方式的Hint
三表连接计划可能是t2 t3先join,再跟t1 join,或t1 t2先join,再跟t3 join。此hint只hint最后一次join的join方式,对于两表连接的方法不hint。如果需要,可以单独指定,例如:任意表均不允许nestloop连接,且希望t2 t3先join,则增加hint:no nestloop(t2 t3)。table_list为表示hint表集合的字符串,该字符串中的表与join_table_list相同,只是中间不允许出现括号指定join的优先级。
2025-02-26 09:22:00
276
原创 GaussDB Plan Hint调优概述
GaussDB Plan Hint调优概述Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,指定重分布过程中的倾斜信息等多个手段来进行执行计划的调优,以提升查询的性能。GaussDB还提供了SQL PATCH功能,在不修改业务语句的前提下通过创建SQL PATCH的方式使得Hint生效。
2025-02-26 09:21:43
597
原创 GaussDB 行数的Hint
操作符的hint,只要两个表出现在join的两端,都会触发hint。例如:设置hint为rows(t1 t2 * 3),对于(t1 t3 t4)和(t2 t5 t6)join时,由于t1和t2出现在join的两端,所以其join的结果集也会应用该hint规则乘以3。table_list为hint对应的单表或多表join结果集,与Join方式的Hint中table_list相同。rows hint支持在单表、多表、function table及subquery scan table的结果集上指定hint。
2025-02-26 09:12:03
171
原创 GaussDB经验总结:SQL语句改写规则
GaussDB经验总结:SQL语句改写规则根据数据库的SQL执行机制以及大量的实践,总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。如果遵守这些规则,常常能够大幅度提升业务查询效率。使用union all代替unionunion在合并两个集合时会执行去重操作,而union all则直接将两个结果集合并、不执行去重。执行去重会消耗大量的时间,因此,在一些实际应用场景中,如果通过业务逻辑已确认两个集合不存在重叠,可用union all替代union以便提升性能。
2025-02-26 09:09:27
794
原创 GaussDB算子级调优
一个查询语句要经过多个算子步骤才会输出最终的结果。由于个别算子耗时过长导致整体查询性能下降的情况比较常见。这些算子是整个查询的瓶颈算子。通用的优化手段是EXPLAIN ANALYZE/PERFORMANCE命令查看执行过程的瓶颈算子,然后进行针对性优化。如下面的执行过程信息中,Hashagg算子的执行时间占总时间的:(51016-13535)/ 56476 ≈66%,此处Hashagg算子就是这个查询的瓶颈算子,在进行性能优化时应当优先考虑此算子的优化。
2025-02-26 09:08:45
310
原创 GaussDB统计信息调优
GaussDB是基于代价估算生成的最优执行计划。优化器需要根据analyze收集的统计信息进行行数估算和代价估算,因此统计信息对优化器行数估算和代价估算起着至关重要的作用。通过analyze收集全局统计信息,主要包括:pg_class表中的relpages和reltuples;pg_statistic表中的stadistinct、stanullfrac、stanumbersN、stavaluesN、histogram_bounds等。
2025-02-26 09:08:31
745
原创 GaussDB SQL自诊断
GaussDB SQL自诊断GaussDB用户在执行查询或者执行INSERT/DELETE/UPDATE/CREATE TABLE AS语句时,可能会遇到性能问题。GaussDB SQL自诊断的告警类型与GUC参数resource_track_level的设置有关系。如果resource_track_level设置为query,则可以诊断多列/单列统计信息未收集和SQL不下推的告警。如果resource_track_level设置为operator,则可以诊断所有的告警场景。
2025-02-25 16:00:10
267
原创 GaussDB对慢SQL语句进行分析,通常包括以下步骤
针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体参见典型SQL调优点。通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。经验总结:SQL语句改写规则介绍了几种常用的通过改写SQL进行调优的方法。
2025-02-25 15:58:24
321
原创 GaussDB相关的第三方工具都是通过JDBC进行连接的,此部分将介绍工具配置时的注意事项
通过JDBC连接数据库时,会设置extra_float_digits=3,gsql中设置为extra_float_digits=0,可能会造成同一条数据在JDBC显示和gsql显示的精度不同。第三方工具通过JDBC连接GaussDB时,JDBC向GaussDB发起连接请求,会默认添加以下配置参数,详见JDBC代码ConnectionFactoryImpl类的实现。目前,GaussDB相关的第三方工具都是通过JDBC进行连接的,此部分将介绍工具配置时的注意事项。时区设置相关的操作,请联系管理员。
2025-02-25 15:56:26
237
原创 GaussDB约束设计
如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。给可以显式命名的约束显式命名。除了NOT NULL和DEFAULT约束外,其他约束都可以显式命名。给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。从命名上明确标识主键约束,例如,将主键约束命名为 “PK+字段名”。从命名上明确标识检查约束,例如,将检查约束命名为 “CK+字段名”。从命名上明确标识唯一约束,例如,命名为“UNI+构成字段”。
2025-02-25 15:55:52
239
原创 GaussDB中可以使用Database和Schema实现业务的隔离
GaussDB中可以使用Database和Schema实现业务的隔离,区别在于Database的隔离更加彻底,各个Database之间共享资源极少,可实现连接隔离、权限隔离等,Database之间无法直接互访。如果该用户不具有sysadmin权限或者不是该Schema的owner,要访问Schema下的对象,需要同时给用户授予Schema的usage权限和对象的相应权限。删除权限影响较大,请谨慎使用。Schema的owner默认拥有该Schema下对象的所有权限,包括删除权限。Schema设计建议。
2025-02-25 15:55:05
161
原创 GaussDB子查询调优
应用程序通过SQL语句来操作数据库时会使用大量的子查询,这种写法比直接对两个表做连接操作在结构上和思路上更清晰,尤其是在一些比较复杂的查询语句中,子查询有更完整、更独立的语义,会使SQL对业务逻辑的表达更清晰更容易理解,因此得到了广泛的应用。GaussDB根据子查询在SQL语句中的位置把子查询分成了子查询、子链接两种形式。子查询SubQuery:对应于查询解析树中的范围表RangeTblEntry,更通俗一些指的是出现在FROM语句后面的独立的SELECT语句。
2025-02-25 15:54:20
631
原创 GaussDB创建和管理视图
视图与基本表不同,不是物理上实际存在的,是一个虚拟表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。执行如下命令创建新视图MyView,其中tpcds.web_returns为已经创建的、包含名为wr_refunded_cash整型字段的用户表。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决此问题。执行如下命令查询MyView视图的详细信息。
2025-02-25 15:23:39
257
原创 GaussDB创建和管理索引
在开启逻辑复制的场景下,如需创建包含系统列的主键索引,必须将该表的REPLICA IDENTITY属性设置为FULL或是使用USING INDEX指定不包含系统列的、唯一的、非局部的、不可延迟的、仅包括标记为NOT NULL的列的索引。执行如下命令对索引分区web_returns_p2_P8_index重命名web_returns_p2_P8_index_new。当系统认为使用索引比顺序扫描更快时,就会使用索引。创建分区表索引tpcds_web_returns_p2_index1,不指定索引分区的名称。
2025-02-25 15:21:52
892
原创 GaussDB数据库对象命名
数据库对象名称建议能够望文知意,尽量避免使用自定义缩写(可以使用通用的术语缩写进行命名)。如果超过该长度内核会对表名进行截断,从而出现实际名称和设置值不一致的现象,且在不同字符集下,可能造成字符被截断,出现预期外的字符。避免使用双引号括起来的字符串来定义数据库对象名称,除非需要限制数据库对象名称的大小写。表对象的命名应该可以表征该表的重要特征。变量名的关键是要具有描述性,即变量名要有一定的意义,变量名要有前缀标明该变量的类型。增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。
2025-02-25 15:21:30
395
原创 GaussDB数据库支持的分区表为范围分区表、列表分区表和哈希分区表
例如在数据库中创建了一个表tpcds.customer_address的备份表tpcds.web_returns_p2,现在需要将表tpcds.customer_address中的数据插入到表tpcds.web_returns_p2中,则可以执行如下命令。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。列表分区表:将数据中包含的键值分别存储在不同的分区中,依次将数据映射到每一个分区,分区中包含的键值由创建分区表时指定。修改分区P6的表空间为example3。
2025-02-25 15:19:44
614
原创 系统安全GaussDB
云数据库GaussDB管理平台(TPOPS)的安全网络拓扑如图1所示。图1 安全网络拓扑云数据库GaussDB管理平台(TPOPS)仅支持在企业网或内网中安装使用。Web、管控Service和GaussDB Meta Store、InfluxDB必须创建在扩展信任域,管控Agent和数据库创建在信任域中。
2025-02-19 10:32:25
365
原创 GaussDB数据库SQL系列-动态语句
GaussDB数据库是一款具备高性能、高可用性和高扩展性的关系型数据库,它提供了丰富的功能和工具,支持动态SQL语句的构建。通过使用GaussDB数据库构建动态SQL语句,数据应用部门可以更好地应对不断变化的数据查询需求,提高应用程序的性能和可维护性。USING IN的变量: 用于指定存放传递给动态SQL值的变量,在SQL拼接时可用占位符,占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的变量一一对应。执行查询:使用GaussDB数据库的查询接口,执行构建好的SQL语句并获取查询结果。
2025-01-24 10:31:23
638
原创 GaussDB数据库SQL系列-LOCK TABLE
UPDATE,DELETE,INSERT命令会自动在目标表上请求这个锁(且所有被引用的其他表上还会自动加上的ACCESS SHARE锁)。同样,大多数GaussDB命令自动施加恰当的锁,以保证被引用的表在命令的执行过程中不会以一种不兼容的方式被删除或者修改。然而在某些操作的时候,会在某些系统表上请求它。在GaussDB中,锁是实现并发控制的关键机制之一,用于协调多个事务之间的数据访问,确保数据的一致性和完整性。在数据库中,事务是一组一起执行的SQL语句,要么全部成功,要么全部失败,这可以确保数据的一致性。
2025-01-24 10:30:53
527
原创 GaussDB技术解读系列:如何迁移到GaussDB_
上面解答了能不能迁移,怎么迁移的问题,那么迁移至GaussDB后能否平稳度过业务峰值的考验,技术上有了上面UGO和DRS的基础,我们能够在Oracle数据库上自动采集数据了。数据库一个非常繁忙的软件,每过一秒都有可能会有成千上万的数据发生变化,如何在数据高度变化的动态过程中将数据库迁走,比较容易想到的做法是将业务停机来确保数据迁移不丢失,但这对于一个核心业务来说是无法接受的,这样就提出了一个技术问题,有没有一种办法可以在业务运行过程中将数据库迁移到GaussDB,也就是业界常说的热迁移,或者说在线迁移。
2025-01-24 10:30:36
603
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人