陈君
摘要
随着各类信息系统业务逻辑的不断丰富、各个功能子模块复杂度的不断提升,最初设计的数据库系统的性能往往会不断的恶化,为了保障各类信息的稳定可靠运行,对数据库进行优化处理成为关键所在。本文结合在企业应用中最为常见的Oracle数据库,从优化必要性、相关影响因素以及优化措施等方面予以简要的探讨,优化数据库应从数据库运行的软硬件环境、数据库全局性配置以及数据库SQL文件以及相应的SQL执行过程追踪等多个方面予以综合性保障予以实现。
【关键词】计算机 Oracle 数据库 优化 措施
1Oracle数据库简介
Oracle数据库是Oracle(甲骨文)公司的核心产品,其产品作为大型关系型数据库拥有良好的性能而被业界广泛的应用,作为应用最为广泛的数据库之一,Oracle数据库展现了其卓越的设计理念和良好应用性能,目前Oracle数据库的最新版本是Oracle Database 12c,该版本顺应当前云计算应用的发展,对于快速部署和管理云应用有着良好的平台支撑。Oracle数据库是传统的关系型数据库,无论是CS架构还是BS架构的服务运行模式中都有着可靠的性能,其高可移植性适用于高吞吐量的应用系统。随着计算机硬件资源和软件系统的不断丰富,Oracle数据库可以稳定运行于各类微机平台上,进一步展现了其强大的平台适应性。要充分发挥Oracle数据库性能,做好相关优化处理工作是十分必要的,下文将以Oracle数据库优化处理为主要内容对相关进行简要的论述。
2Oracle数据库优化必要性以及影响因素分析
2.1Oracle数据库优化必要性分析
数据库作为各类信息系统的数据存储支撑发挥着重要的作用,随着系统业务量的不断增长、系统用户的膨胀以及各个系统模块接口复杂度的提升,数据库系统的性能往往会持续恶化,因此为了保障各类信息系统的稳定可靠运行,对数据库进行必要的优化处理成为关键。优化数据库系统是综合数据库运行的软硬件环境以及数据库各种结构化操作语句分析设计的综合性技术应用,涉及到了诸多的方面。
另外,随着云计算技术的发展,软硬件资源的弹性供给能力不断增强,数据库系统作为底层的系统软件支撑是否还需要进行必要的优化处理,答案是肯定的,云计算技术虽然提供了高可扩充的軟硬件资源,但也应看到如今信息系统的业务量呈几何爆炸式的增长现实需求,单纯的依靠提升软硬件环境是远远不能满足业务以及功能发展需求,鉴于此Oracle数据库的优化设计应持续推进以适应当前高并发、大业务的功能需求发展。
2.2Oracle数据库性能影响因素分析
如上文所述,Oracle数据库性能影响因素是综合性的,不是单纯的SQL设计或者内存分配不均所造成的,根据Oracle数据库运行的软硬件环境以及数据库自身的影响因素分析,通常以下几个方面是制约其性能发挥关键要素:首先是硬件资源的应用,尤其是CPU(处理器)和内存的不合理分配,CPU是数据操作和计算机资源控制的核心,数据库系统运行过程中最为常见的CPU问题就是CPU资源占用过多,导致Oracle数据库无法分配可用的计算和控制资源引发的数据阻塞问题,而内存分配问题则更多的是其分配不合理,频繁的数据块交换引发的操作系统资源大量浪费;其次则是软件资源的不合理应用,从Oracle数据库运行和自身软件应用来分析,常见的软件资源问题包括操作系统软件以及Oracle自身设置问题,操作系统作为抽象和管理整个计算机系统资源的系统软件,发挥着关键的作用。Oracle作为大型的数据库系统要正常的运行需要操作系统进行合理的设置,以满足其功能性和性能性的需求,另外,数据库自身的系统设计,如表空间能否合理分配,缓冲池是否进行了有效利用等都是软件环境对于数据库系统的重要影响;最后则是数据库逻辑设计对于数据库系统性能的影响,数据库逻辑设计的核心在于SQL语句的合理化设计,这也是各类信息系统进行数据持久化操作的主要方式,如大量的全表扫描、多项目主键应用、索引等优化处理手段的不合理应用、I/O的规划缺失等都容易造成SQL逻辑设计问题,使得其结构化查询效率较低,引发一定的数据阻塞问题,进而影响其数据库的性能发挥。
2.3Oracle数据库优化的目标分析
2.3.1压缩数据库响应时间
数据库响应时间主要是指从用户或信息系统发出SQL到获得相应结果集的花费,通常是以时间的方式进行描述的(单位以ms来表示),作为核心的数据库优化目标,响应时间是其关键的指标,这是最为直观的性能优化结果,对提升用户体验有着重要的意义,当然,由于不同的SQL语句在进行数据库操作时由于其请求方式或者数据表级的不同,其响应时间必然是不同的,因此,在进行响应时间的统计时是进行参照量的比较,这是需要注意的地方。
2.3.2吞吐量以及命中率的提升
吞吐量是单位时间内能够完成的SQL请求数量的能力(单位是TPS),反应了数据库处理相关业务量的能力,同样是优化数据库的关键目标。单位时间内,数据库能够完成的吞吐量越大,一定程度上能够反应出其高效的数据库处理能力。
命中率则是访问特定数据库资源的成功率,这种资源包括缓冲区命中率、解析命中率等等,命中率是保障数据库资源能够被合理访问关键,能否命中的关键在于系统相关资源的设置合理性,作为数据库高效处理数据的能力,命中率也是非常关键的因素。
2.3.3磁盘应用优化
磁盘是各种文档资源和程序数据的存储区域,与内存进行I/O操作的主要部件,因此在进行数据库优化时,能否合理匹配内存与I/O设备速度不匹配、磁盘文件操作系统的规划合理性是非常关键的性能指标,减少频繁的置换操作,降低由于读写磁盘I/O对于引发的系统响应时间,鉴于此一些构建于内存系统的数据库结构也是近年来高并发系统应用的主流,由此,优化磁盘应用也是重要的数据库优化目标。endprint
2.3.4内存以及CPU资源的有效利用
CPU资源直接操作的存储设备包括寄存器、高速缓存以及内存资源,其中高速缓存cache主要是基于二八定律、匹配CPU与内存之间的速度而产生的,因此,在进行数据库系统的应用时,应加强对CPU资源以及内存资源的监测以确保其应用的合理性,对于CPU的控制主要是保障其系统资源的占用率不要太高而无法处理用户的请求;而内存的应用则是优化数据资源的分布,提升数据命中率、减少与I/O设备的频繁数据交换。
3Oracle数据库优化措施分析
3.1对Oracle数据库运行所依赖的软硬件环境进行优化
(1)从硬件角度而言,通过升级硬件的手段来提升数据库系统的性能提升是最为常见的手段,具体的升级措施包括,更换处理能力更强、频率数更高的处理器、扩充内存容量、提升网络带宽、通过硬件服务器进行I/O数据交换能力的提升、通过多开路的方式实现数据库负载均衡处理。根据统计数据而言,通过软硬件换件的升级换代,能够提升数据库系统的百分之三十以上的性能。就目前而言,一种更为有效的资源分配方式正改变着硬件环境对于Oracle数据库系统的运作方式,即云计算平台的应用,通过动态的监控现有环境的CPU、内存以及硬盘资源,根据业务量的增长对硬件环境进行弹性化处理,一方面有效的利用了现有的硬件资源、同时也实现了可靠的硬件扩充功能。
(2)则是操作系统软件的优化处理,操作系统作为支撑Oracle数据库运行的系统软件,虚拟化了各种硬件资源,为Oracle数据库的运行提供了系统接口,因此作为承上启下的操作系统性能的优劣直接决定当前数据库系统的性能,例如减少服务器的运行服务,通过禁用不必要的软件优化Oracle运行环境、检测监控内存、CPU的实时运行情况,对于超负荷运行的条件予以统计,及时关闭不必要的软件以及服务;除此之外,还建议通过增加虚拟内存的容量、内存进行调优处理、对系统缓存数据进行必要的清理等手段提升整个数据库运行环境的稳定、可靠性。
3.2優化数据库配置相关I/O数据
通过调整I/O进行优化Oracle数据库处理能力。首先,Oracle作为具有典型I/O特征的数据库程序,应合理的进行I/O数据调整,一方面从并发性的角度而言,应通过对表空间进行分磁盘处理,通过有效的利用不同磁盘数据读写的并发能力、减少同一磁盘的利用率,提升数据库服务的并行性;另一方面,Oracle数据库是多进程程序,诸多进程读写数据文件,由此在数据库设计之处就应考虑到由于频繁I/O引发的数据文件性能问题。其次,对于Oracle程序而言,建议通过RAID Controller进行磁盘控制,对于碎片过多的磁盘首先应进行碎片整理、最好不要使用经过加密或压缩处理后的磁盘控制,以满足Oracle数据库服务管理对于磁盘I/O的要求。总之,必要的I/O配置是基于Oracle数据库特点进行优化处理的关键手段应予以重视。
除此之外,对SGA(System Global Area)区块数据进行优化配置,也是优化Oracle数据库的关键,SGA作为全局性的Oracle数据服务包含了丰富类型的配置信息,如sharedpool(共享池)、the data dictionary cache(数据字典缓存)、the data base buffer cache(数据库高速缓存)等诸多影响全局的配置信息。常见的优化处理手段包括,将SGA存放于内存之中,提升其读写效率、对日志信息进行定期的检查、根据系统运行情况合理的分配给各个用户使用内存以共享池数据、对于缓冲区数据进行度量和优化处理等。
总之,优化数据库配置相关的I/O文件也是常见的优化数据库性能的重要举措应予以重视。
3.3优化Oracle数据库SQL逻辑
对于Oracle数据库的核心应用而言,各种SQL语句的操纵是进行业务逻辑功能实现的核心,也是数据库实现数据持久化功能的基础。因此,做好Oracle数据库SQL逻辑的优化处理对于提升整个数据库性能有着至关重要的作用。就典型的Oracle数据库SQL逻辑操作而言主要有以下几种类型:首先,避免对的使用,在查询语句中常见的所有列查询通常都是以“select*”出现的,本文建议应避免使用“*”,一方面由于数据库对于的解析处理需要耗费一定的系统开销、另一方面在进行相应列转换时也会消耗一定系统资源,导致了整个SQL语句的执行效率不高;其次,在避免使用“having”进行条件过滤,尽量使用where进行予以代替,因为having先对结果集进行分组处理结束之后才进行的过滤条件,而where条件查询可以有效的减少分组集数量,从而提高整个查询效率;再次,避免使用delete语句,而应用truncate予以替代,这主要是由于在进行delete操作之后,首先会将数据存储在回滚数据缓存区,在进行数据删除,而truncate直接对数据进行删除操作,节约了运行时间;除此之外,建议使用“exists”,避免使用“in”,这主要是由于“exists”仅仅判断返回行是否存在于存在航,“in”操作符还会检查列属性的存在与否,这样必然会引起更多的系统处理消耗,从而降低数据库系统吞吐量。当然,在进行数据检索的时候,有效的利用索引(需要耗费一定的系统资源),能够快速处理ROWID值,从而提高数据查询数据速率。对于Oracle数据库SQL逻辑的优化处理是相当多的,用户应根据自身的实际情况进行合理的处理,本文只是给出一定的优化思路,在此就不一一进行列举了。
3.4做好Oracle数据库系统执行过程的追踪
一般对于Oracle数据执行过程的追踪主要有两种方式,一种即“Explain Table”的方式,另一种则是通过TKPROF工具进行实施。在进行“Explain Table”主要是对SQL语句执行计划的各个步骤都在“Explain Table”中予以呈现,从记录表中的数据可以看出,整个“优化器类型”、“执行代价”、“资源代价”等关键信息,从而根据记录信息对相关数据进行优化处理。TKPROF工具的使用,是追踪SQL执行全过程,给出优化处理的数据信息参考。通过TKPROF,可以发现占CTU资源最高的PID,进而找到相应的SID和SERIAL#。再通过“dbms_system.set_sql_trace_in_session”对Session进行追踪,并通过“user_dump_dest”定义生成的trace文件,由TKPROF工具进行分析,从而定位相关SQL语句,诊断其语句执行问题。系统分析人员根据其CPU占用时间、消耗的时间等信息对相应SQL语句进行必要的调整。
4结论
Oracle数据库是甲骨文公司的核心产品,作为一种主流的大型数据库在各类信息系统中有着广泛的应用,随着用户业务量的持续增长,数据库的响应时间、处理能力都受到的严重的挑战,为了应对数据库性能瓶颈问题,做好相关数据库优化处理工作则显得十分关键,数据库优化处理涉及到了数据库运行所依赖的软硬件环境、数据库配置文件的优化、数据库核心业务的SQL逻辑优化处理以及数据库执行过程的追踪等环节,由此可见,数据库优化处理是综合性工作,本文从Oracle数据库优化必要性、相关因素以及优化措施两个方面进行了相关内容的论述,为有效利用数据库、做好数据库优化处理工作提供参考。
参考文献
[1]韦安云.Oracle数据库的性能调整与优化方法探析[J].电脑知识与技术,2015(21):8-9.
[2]王承军.高并发大数据在线学习系统中的关键技术研究[D].中国地质大学,2015.
[3]冷爽.Oracle数据库管理的优化措施分析[J].电子制作,2015(06):63.
[4]王晓菲.航空结算系统基于oracle数据库的性能优化[J].价值工程,2015(02):210-211.
[5]冯育栋.信息系统Oracle数据库性能优化研究[J].计算机光盘软件与应用,2014(24):120-121.
[6]范君君,赵黎.浅谈Oracle数据库SQL性能优化[J].信息系统工程,2014(10):86.
[7]赵新民,崔海艳.Oracle数据库SQL语句优化要点分析[J].信息安全与技术,2014(06):65-66+69.
[8]张爱,张清辉.基于代价的Oracle优化器的性能调优案例分析[J].中国管理信息化,2013(24):78-80.
[9]邓磊.Oracle数据库性能调整与优化技术分析[J].计算机光盘软件与应用,2013(17):96-97.endprint