当前位置:文档之家› 数据库性能监控分析系统的设计与实现

数据库性能监控分析系统的设计与实现

—105—数据库性能监控分析系统的设计与实现王 娜,宿红毅,白 琳,王 鑫,郝子昭(北京理工大学计算机科学与工程系,北京 100081)摘 要:在讨论Oracle 体系结构和性能优化的基础上介绍了一个基于J2EE 的数据库性能监控和分析系统(DMI)的总体设计思想及其部分实现。

关键词:性能优化;Oracle ;实时监控;JMS ;RMIDesign and Realization of Database Performance Monitoring andAnalyzing SystemWANG Na, SU Hongyi, BAI Lin, WANG Xin, HAO Zizhao(Dept. of Computer Science and Engineering, Beijing Institute of Technology, Beijing 100081)【Abstract 】This paper presents the design and part of implementation of a database performance monitoring and analyzing system (DMI) based on J2EE with discussing the architecture and performance optimizing of Oracle. 【Key words 】Performance optimizing; Oracle; Real-time monitoring; JMS; RMI计 算 机 工 程Computer Engineering 第31卷 第24期Vol.31 № 24 2005年12月December 2005·软件技术与数据库·文章编号:1000—3428(2005)24—0105—03文献标识码:A中图分类号:TP311.13随着数据库应用的不断深入和扩大,数据库中的数据量迅速增长,数据操作也越来越复杂,数据库工作效率逐渐下降。

因此,实施对数据库的管理维护、性能调优越来越受到广大数据库管理员(DBA)的关注和重视。

虽然目前各种数据库产品本身也提供了大量功能强大的性能监控和调试工具,如Oracle 的OEM 、Performance Manager 、Capacity Planer 等,来帮助数据库管理人员对数据库性能进行调整、优化,但遗憾的是,精通掌握这些工具并能通过它们来有效地分析数据库性能状态,进而合理配置数据库以调整其性能也十分困难。

因此开发一个简单高效的数据库性能监控管理工具来辅助DBA 对数据库进行性能分析调优成为数据库应用不断扩展的需要。

针对这种情况,本文结合业界先进的数据库管理经验,开发了Database Management Insight(DMI)——一个简单、实用、方便、安全的数据库监控管理平台。

它可以有效地辅助数据库管理人员对数据库进行性能优化,确保数据库正常、平滑、高效地运转。

DMI 可以监控Oracle 、Sybase 、DB2等数据库,本文以Oracle 为例来对该系统进行阐述。

1 总体设计1.1 Oracle 的结构和性能优化数据库优化的目的是更改系统的一个或多个组件,使其满足一个或多个目标的过程。

对Oracle 数据库来说,优化是进行合理的资源配置,达到组件之间的均衡以改善其性能,即增加吞吐量、提高响应时间。

数据库性能优化要考虑到系统的各个组成部分,由图1可以看出,Oracle 应用系统主要包含以下几个部分[1]:(1)用户进程和服务器进程 用户进程是SQL 语句的提出者,服务器进程则负责执行由用户进程传递过来的SQL 语句,与SGA 区交互。

用户进程和服务器进程是数据库性能调整的一个重要方面,尤其是当用户的数量随着时间的推移而不断增大时,建立与数据库的重复性临时连接的Web 应用系统会导致性能下降[2]。

(2)Oracle 实例 一个Oracle 实例是存储结构和后台进程的组合体。

其中,SGA 是用来存放所有数据库进程共享的数据和控制信息的存储区域,当数据库一启动,SGA 就立即占有服务器的内存空间。

SGA 中的库高速缓存、字典高速缓存、数据高速缓存、日志缓冲区以及大缓冲池和Java 池等组件的大小对系统性能有极大的影响,它们直接影响磁盘I/O 的频率,从而影响数据库效率[3]。

实施性能优化时应注意DB_CACHE_SIZE 、SHARED_POOL_SIZE 、LOG_BUFFER 、LARGE_POOL_SIZE 和JAVA_POOL_SIZE 这几个参数的值,如果配置不合理会造成系统资源的极大浪费。

图 1 Oracle 体系结构基金项目:武器装备预研项目作者简介:王 娜(1981—),女,硕士生,主研方向:计算机网络与分布式处理;宿红毅,副教授;白 琳、王 鑫、郝子昭,硕士生 收稿日期:2004-10-28 E-mail :sdbzwn@Oracle实例的另一个组成部分是后台进程,主要有系统监视进程(SMON)、进程监视进程(PMON)、数据库写进程(DBW0)、日志写进程(LGWR)和检查点进程(CKPT)。

后台进程负责进行执行磁盘I/O操作和监视管理其它进程进行可能多的并行操作以获取更好的性能和效率[1]。

(3)Oracle数据库由数据文件(Data files)、控制文件(Control files)和Redo日志文件(Redo Log files)组成,与其相关的还有参数文件(Parameter files)、密码文件(Password files)和存档的日志文件(Archive Log files)等,它们的物理和逻辑结构影响磁盘I/O效率,与系统的整体性能密切相关。

总体来说,对Oracle数据库的调整,应使用综合的Oracle 调整方法,从检查外部环境入手,然后逐渐深入细节。

整个过程使用自顶向下的概念,首先从整体环境考虑,仔细检查可能出现问题的部分,包括服务器、磁盘、网络等。

在完成了对服务器环境的调整之后,检查影响Oracle数据库的全局参数,特别注意控制SGA配置的初始化参数以及数据库的整体行为。

然后是数据库中单个表和索引,查看能够控制表行为的存储设置,并且查看这些设置适应单个对象处理需求的情况。

最后是SQL语句,它们的执行效率极大地影响着数据库的性能,通过对其进行正确的调整可以使数据库的性能获得一个数量级程度的改善。

应辨识哪些SQL语句使用最频繁,然后使用必要的工具进行调整以获得最优的执行计划[4]。

1.2 DMI功能定义通过分析Oracle数据库体系结构和性能优化知识,根据用户需求,将DMI按照业务功能划分为系统初始化、数据库实时监控、数据库历史数据监控和分析、数据库浏览、基于专家系统的智能报告生成以及SQL语句分析和优化6个子系统。

1.2.1 实时监控子系统实时监控子系统是DMI重要的组成部分,其目的是按照用户定义的采样时间段轮询从后台数据库采样性能指标,实时反应目标数据库的各项性能指标的变化情况。

监控内容按Oracle数据库架构和功能类型分为如下8大部分:(1)数据库情况概览实时监控主界面,是对后台数据库某些性能指标一个概览,主要内容是一些可以直观反映数据库状况的性能指标,包括CPU和内存使用、SGA、进程以及磁盘存储等的概要信息。

(2)系统资源情况数据库服务器所在主机的系统资源的使用情况,包括CPU使用情况、一分钟内占据CPU资源最多的进程情况、内存使用情况、磁盘使用情况和网络状态等。

(3)会话情况数据库系统中的会话情况,浏览所有会话的运行状态、资源占用情况以及各个会话的实际运行情况。

包括会话概要信息、会话详细信息、会话等待事件、会话统计信息、会话锁信息等内容。

(4)数据库活动情况从活动概要、等待、Blocking locks、Latch、锁、事务、回滚段等子部分详细反应数据库的活动情况。

(5)系统全局区信息SGA各个组件的使用情况,并对共享池(Shared Pool)、PL/SQL对象、热块(Hot Block)等部分做了详细的分析和统计。

(6)数据库I/O情况用户定义时间内数据库I/O方面的信息,包括I/O概述、数据文件I/O、逻辑I/O和缓冲池(Buffer Pool)I/O 4个部分。

(7)存储信息数据库表空间使用情况、在线重做日志、热表、热索引和对象使用情况等一些与存储相关的信息。

(8)SQL情况根据条件实时显示SQL语句,发现Oracle 的SQL语句中的高负荷SQL语句(主要是削夺I/O资源和存储资源的SQL语句),提供SQL语句的收集和编辑功能,并可将高负荷的SQL语言分类,导航最佳化进程。

1.2.2 其它模块DMI初始化模块负责对整个系统进行配置管理,包括采样时间设置、性能参数阈值设置、报警设置等操作;数据库历史数据监控和分析模块使用户可以根据需要定制浏览过去某一时间段内的实时监控部分所产生的历史数据内容及其统计信息,揭示历史时间段内数据库的运行状况;数据库浏览模块允许用户可以在不打开数据库的情况下浏览数据库的信息,如数据库表结构、索引、分区、视图、簇等信息;基于专家系统的智能报告生成模块以专家系统理论为基础,根据阈值越界信息、DBA专家总结出来的相关规则等信息进行推理诊断,寻找问题解决方案形成报告提交给用户;SQL分析和优化模块负责分析SQL语句的运行,提出优化建议。

1.3 DMI总体架构DMI采用B/S三层架构,基于J2EE的分布式构件技术实现,以保证系统的跨平台性和扩展性。

前端是IE客户端,中间是基于J2EE技术的应用服务层,后台是被监控和存放历史监控信息的数据库。

其中,实时监控部分采用JMS(Java Message Service)技术和RMI(Remote Method Invocation)技术,通过定时轮询机制或客户请求机制从后台数据库获得性能指标信息,以异步的方式发送到客户端来实现,且同时把相应的性能指标信息记录到历史监控信息数据库中。

而对于初始化、历史数据回放、数据库浏览等功能,由于其实时性要求不高,根据MVC模式结合Web容器机制设计,直接使用JSP-Servlet-JavaBean分模块实现。

DMI系统总体结构如图2所示。

图2 DMI系统体系结构从上图看出,业务逻辑的核心位于中间层,它分为两部分:后台是数据采样过程,负责进行数据库访问;前端是进行RMI服务器端应用、JMS生产者以及长期监控等相关的Web容器中的SERVLET/JSP应用。

这样把数据访问和业务流程控制分开,有利于对系统进行更新和扩展。

IE客户端主要包括两部分:实时监控的APPLET、UI组件、数据缓冲队列和数据采集客户以及其它模块的JSP或HTML页面。

相关主题