百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

从Oracle的SQL管理能力,看国产数据库差距

mhr18 2024-10-03 22:47 18 浏览 0 评论

SQL,作为与数据库交互的主要方式,其管理能力对数据库的安全稳定运行至关重要。作为数据库的标杆性产品,Oracle 在这方面能力非常全面;与之相对的是国产数据库还存在一定的差距。当前很多企业正面临国产化替代的过程,更需正视这一差距,通过在生态工具、实施方案及自研增强等多种手段加以完善补充。


下文从 Oracle 能力为基础,介绍相关能力作用及国产数据库当前现状。文中选择了部分国内主流数据库产品及开源产品作为对比,其相关能力取自官网和部分朋友的反馈。对比中加入了开源数据库,主要是因为部分国产数据库是基于开源数据库二次化开发而来,此处列入方便对比。


一、SQL 管理能力大对比


在下文展开之前,我们先通过一张表格做个全局性的概览。




1、SQL 解析


SQL 解析,简单描述就是将用户提交的 SQL 语句,交由数据库内核,经多个步骤后生成最终的执行计划,并交由执行器来完成执行。这其中关键能力有两个,一是执行计划缓存,一是解析过程的跟踪。


1)计划缓存


执行计划的缓存可以加速后续相同语句的执行速度,大部分数据库都内置了缓存能力,当然有利就有弊,有了缓存能力就需考虑缓存的更新机制等问题。Oracle Shard Pool 中的 Library Cache,保存了 SQL 对应的多个执行计划(以游标的形式存在)。可以说 Oracle 对执行计划的存储控制,是我见过最为完善的,考虑到很多情况(如绑定变量、数据特征等等)。国产数据库大多也支持了执行计划缓存,但管理粒度比较粗放且很多细节是未知的,相关文档资料较少。


2)过程跟踪


解析过程的跟踪,作为 SQL 优化的基础,理解执行计划的生成过程非常重要;数据库自身是否提供了一个窗口可以去观察内部执行机理,对于 DBA 优化非常实用。优化器生成执行的计划的过程是比较复杂的,当一条语句的执行计划较差,一个很好的入口就是查看下优化器生成执行计划的过程。Oracle 提供了等待事件 10053,可以对整个执行过程做了详细的了解,通过对这个事件的阅读可以帮我们回答很多问题。例如为什么选择这个索引?多个近似成本的执行计划的选择?等等。国产数据库在这方面功能差距较大,大多没有提供这一能力,很多时候是要靠 DBA 的经验来评估判断的。




2、执行计划


执行计划,可以语句在数据库中的执行路径,是了解数据库运行机理的重要窗口。在此部分需提供的能力包含几个,分别是执行计划的查看、固定、迁移和销毁。


1)查看执行计划


可以说优化 SQL 的第一步就是获得一份准确详实的执行计划。这里要区分两种情况,一种是根据用户提交的语句生成的执行计划,一种是对执行过或进行中的语句获得其执行计划。前者是优化器新生成的执行计划,但不代表是真实执行的,两者可能会存在差异。Oracle 提供了多种手段查看执行计划,而且可查询当前正在执行的或已结束语句的执行计划。国产数据库也都提供了查看执行计划的手段,但一般仅支持第一种方式且信息输出粒度也较Oracle存在一定差距。


2)固定执行计划


令DBA非常头疼的一个问题就是执行计划不稳定,受多种因素影响会出现这一现象,对于前端业务来说就会出现忽慢忽快的问题。为了使SQL语句的执行稳定下来,可以考虑对一些关键语句进行固定执行计划的工作。Oracle提供了多种手段达到这一目的。一种是常见的Hint方式,这种方式比较直接,但会导致失去其他优化的可能性的同时,需要手工修改语句;另外Oracle还提供了其他多种手段,从9i的Stored Outline、10g的SQL Profile到11g的SQL Plan Management,实现从被动到主动、从固定到灵活地实现了执行计划的稳定性。这方面国产数据库也都提供了一定的能力,但相对来说能力较少,还处于被动补救的状态,尚不支持主动防御性的能力。


3)迁移执行计划


当数据库需要迁移时,除了数据本身迁移外,还有很重要的一部分就是执行计划的迁移,这对于在新环境的稳定运行很关键。Oracle提供了多种方式完成迁移过程,国产数据库这方面比较缺失。


4)清理执行计划


如果一条语句的某个执行计划异常,常见的一个方式是让其失效后,由优化器重新生成一份执行计划。这时就需要能精准销毁到指定执行计划的能力。Oracle是提供了专有的命令来完成清理,当然也可以通过权限变更等手段间接来清理掉执行计划。国产数据库部分具备精确清理的能力,部分尚不具备。




3、SQL 优化


1)诊断优化


当出现某条语句性能比较差的情况,固然可以通过DBA人工来完成优化,但更优的方式是系统内置的诊断优化的能力。以Oracle为例,就提供了一组这样的能力,它通过对数据对象、统计信息、SQL语句本身等多维度评估,给出优化建议,用户更可以基于优化建议一键完成优化动作。这边可大大提高优化效率、降低优化成本,减轻DBA的工作压力。这方面国产数据库也具备一定能力,但一般都是通过外置工具来完成。


2)自动优化


上面谈到的优化动作是指人为主动干预,诊断优化指定语句,数据库还可以提供自动优化能力。Oracle一方面通过将若干上述能力组合实现了批量自动优化;一方面还提供一种自适应特性,即在语句执行过程中,动态根据执行情况实时干预后面的执行逻辑,修正执行计划达到最优。部分国产数据库也具备了类似的能力,但具体还待验证。




4、执行过程


1)查看过程


对SQL执行过程的全方位追踪,也非常重要,可以真实了解语句的执行状态,根据执行过程中暴露出的问题有针对性的进行调整优化。要做到对语句执行追踪是比较难的,需要兼顾效率、开销、粒度等。Oracle在这方面做的非常突出,其提出的事件模型较好地解决了这一问题。其提供了丰富的手段可以对正在执行或已经执行结束的语句实现过程查看。国产数据库在这方面差距还是很明显的,也看到有国内产品在仿照Oracle的方式来实现这一能力。


2)慢SQL


慢SQL,是DBA优化的入手点,这里谈到的慢SQL狭义上指执行时长超过预期的SQL,广义上是对更多资源粒度使用超出预期语句的集合。这方面Oracle基于AWR的存储库,提供了丰富的维度去检索查询语句。国产数据库这方面做到稍显单薄些,大多仅有对运行时间超长语句的输出。




5、其他能力


除了上述能力外,还有些能力也有助于对SQL的管理。例如可以重点标识语句的“着色”功能,用于升序迁移评估的SQL回放功能,用于调整对象进而影响执行计划的不可见索引,用于应急处理语句的雨具重写功能等。这部分功能比较零散,大多根据实践中不断增强,各厂商差异较大。



二、国产数据库实施建议


针对国产库现状的不足,在实施过程中可根据以下几个方面进行准备



1、制定开发规范


充分地了解国产数据库的技术特点,制定有针对性的设计开发规范。很多国产数据库基于多年实践,也都提供了开发规范,可以充分地予以吸纳。特别是针对分布式数据库,对开发有较多约束,要在系统设计、迁移之初就基于考虑。通常原则是尽量简化对数据库的使用,拒绝3B 大SQL(Big SQL) 大事务(Big transaction) 大批量(Big batch) 。



2、完善工具平台


基于国产数据库内核能力的不足,还需要较长一段时间来完善升级,可通过外部工具或平台的方式补齐内部短板。一方面可通过企业自研的方式增强对国产库的管理能力,一方面也可利用一些外围工具来增强。



3、培养人与技能


要想使用好国产数据库,更多是需要人员及技能。目前国产数据库在生态建设方面还尚属初期阶段,需要企业内部独立培养更多的人并具备相应的技能。只要充分地了解理解数据库,才能更好地使用它。业内有某公司使用国产数据库,内部超千人通过认证培训的案例即说明了这点。

相关推荐

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

备份软件调用rman接口备份报错RMAN-06820 ORA-17629 ORA-17627

一、报错描述:备份归档报错无法连接主库进行归档,监听问题12541RMAN-06820:WARNING:failedtoarchivecurrentlogatprimarydatab...

增量备份修复物理备库gap(增量备份恢复数据库步骤)

适用场景:主备不同步,主库归档日志已删除且无备份.解决方案:主库增量备份修复dg备库中的gap.具体步骤:1、停止同步>alterdatabaserecovermanagedstand...

一分钟看懂,如何白嫖sql工具(白嫖数据库)

如何白嫖sql工具?1分钟看懂。今天分享一个免费的sql工具,毕竟现在比较火的NavicatDbeaverDatagrip都需要付费才能使用完整功能。幸亏今天有了这款SQLynx,它不仅支持国内外...

「开源资讯」数据管理与可视化分析平台,DataGear 1.6.1 发布

前言数据齿轮(DataGear)是一款数据库管理系统,使用Java语言开发,采用浏览器/服务器架构,以数据管理为核心功能,支持多种数据库。它的数据模型并不是原始的数据库表,而是融合了数据库表及表间关系...

您还在手工打造增删改查代码么,该神器带你脱离苦海

作为Java开发程序,日常开发中,都会使用Spring框架,完成日常的功能开发;在相关业务系统中,难免存在各种增删改查的接口需求开发。通常来说,实现增删改查有如下几个方式:纯手工打造,编写各种Cont...

Linux基础知识(linux基础知识点及答案)

系统目录结构/bin:命令和应用程序。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是Device(设备)的缩写,该目录...

PL/SQL 杂谈(二)(pl/sql developer使用)

承接(一)部分。我们从结构和功能这两个方面展示PL/SQL的关键要素。可以看看PL/SQL的优雅的代码。写出一个好的代码,就和文科生写出一篇优秀的作文一样,那么赏心悦目。1、与SQL的集成PL/S...

电商ERP系统哪个好用?(电商erp哪个好一点)

电商ERP系统哪个好用?做电商的,谁还没被ERP折腾过?有老板说:“我们早就上了ERP,订单、库存、财务全搞定,系统用得飞起。”也有运营吐槽:“系统是上了,可库存老不准,订单漏单错单天天有,财务对账还...

汽车检测线系统实例,看集中控制与PLC分布控制

PLC可编程控制器,上个世纪70年代初,为取代早期继电器控制线路,开始采取存储指令方式,完成顺序控制而设计的。开始仅有逻辑运算、计时、计数等简单功能。随着微处理的发展,PLC可编程能力日益提高,已经能...

苹果五件套成公司年会奖品主角,几大小技巧教你玩转苹果新品

钱江晚报·小时新闻记者张云山随着春节的临近,各家大公司的年会又将陆续上演。上周,各大游戏公司的年会大奖,苹果五件套又成了标配。在上海的游戏公司中,莉莉丝奖品列表拉得相当长,从特等奖到九等奖还包含了特...

取消回复欢迎 发表评论: