1、工厂方法区分不同类型数据库
/** * get current db performance * @return MonitorRecord */ public MonitorRecord getCurrentDbPerformance(){ MonitorRecord monitorRecord = null; Connection conn = null; try{ conn = dataSource.getConnection(); String driverClassName = dataSource.getDriverClassName(); if(driverClassName.contains(DbType.MYSQL.toString().toLowerCase())){ return new MysqlPerformance().getMonitorRecord(conn); } else if(driverClassName.contains(DbType.POSTGRESQL.toString().toLowerCase())){ return new PostgrePerformance().getMonitorRecord(conn); } }catch (Exception e) { logger.error("SQLException: {}", e.getMessage(), e); }finally { ConnectionUtils.releaseResource(conn); } return monitorRecord; }
2、Mysql统计策略
@Override public MonitorRecord getMonitorRecord(Connection conn) { MonitorRecord monitorRecord = new MonitorRecord(); monitorRecord.setDate(new Date()); monitorRecord.setDbType(DbType.MYSQL); monitorRecord.setState(Flag.YES); Statement pstmt= null; try{ pstmt = conn.createStatement(); try (ResultSet rs1 = pstmt.executeQuery("show global variables")) { while(rs1.next()){ if(rs1.getString(VARIABLE_NAME).equalsIgnoreCase("MAX_CONNECTIONS")){ monitorRecord.setMaxConnections( Long.parseLong(rs1.getString("value"))); } } } try (ResultSet rs2 = pstmt.executeQuery("show global status")) { while(rs2.next()){ if(rs2.getString(VARIABLE_NAME).equalsIgnoreCase("MAX_USED_CONNECTIONS")){ monitorRecord.setMaxUsedConnections(Long.parseLong(rs2.getString("value"))); }else if(rs2.getString(VARIABLE_NAME).equalsIgnoreCase("THREADS_CONNECTED")){ monitorRecord.setThreadsConnections(Long.parseLong(rs2.getString("value"))); }else if(rs2.getString(VARIABLE_NAME).equalsIgnoreCase("THREADS_RUNNING")){ monitorRecord.setThreadsRunningConnections(Long.parseLong(rs2.getString("value"))); } } } }catch (Exception e) { monitorRecord.setState(Flag.NO); logger.error("SQLException ", e); }finally { try { if (pstmt != null) { pstmt.close(); } }catch (SQLException e) { logger.error("SQLException ", e); } } return monitorRecord; }
3、PostgreSQL统计策略
public MonitorRecord getMonitorRecord(Connection conn) { MonitorRecord monitorRecord = new MonitorRecord(); monitorRecord.setDate(new Date()); monitorRecord.setState(Flag.YES); monitorRecord.setDbType(DbType.POSTGRESQL); Statement pstmt= null; try{ pstmt = conn.createStatement(); try (ResultSet rs1 = pstmt.executeQuery("select count(*) from pg_stat_activity;")) { if(rs1.next()){ monitorRecord.setThreadsConnections(rs1.getInt("count")); } } try (ResultSet rs2 = pstmt.executeQuery("show max_connections")) { if(rs2.next()){ monitorRecord.setMaxConnections( rs2.getInt("max_connections")); } } try (ResultSet rs3 = pstmt.executeQuery("select count(*) from pg_stat_activity pg where pg.state = 'active';")) { if(rs3.next()){ monitorRecord.setThreadsRunningConnections(rs3.getInt("count")); } } }catch (Exception e) { monitorRecord.setState(Flag.NO); logger.error("SQLException ", e); }finally { try { if (pstmt != null) { pstmt.close(); } }catch (SQLException e) { logger.error("SQLException ", e); } } return monitorRecord; } 代码来自dolphinscheduler版本1.3.6中的MonitorDBDao
相关推荐
Oracle脚本工具,查看数据库性能情况,查看当前数据库会话情况 支持10G 以上版本
3. **统计包(STATSPACK)**:在Oracle 8i及之后的版本,STATSPACK是收集数据库性能统计信息的重要工具,它能够生成报告帮助DBA识别性能问题。 4. **10046 Trace和Session调优**:Oracle 9i引入了10046 trace,允许...
### Oracle数据库性能分析 #### 一、Oracle体系结构 Oracle数据库是一个复杂且功能强大的关系型数据库管理系统(RDBMS),其核心组件包括实例和数据库文件。理解Oracle的体系结构对于优化性能至关重要。 - **实例**...
- **AWR (Automatic Workload Repository)**:自动负载存储库是Oracle提供的一种用于收集数据库性能统计数据的机制。通过对AWR报告的分析,可以发现导致性能瓶颈的原因。 - **ADDM (Automatic Database Diagnostic ...
数据库性能优化是IT领域中的一个核心议题,尤其对于处理大量数据的企业级应用而言,高效的数据库性能至关重要。在SQL Server、MySQL和Oracle这三大主流数据库系统中,优化策略各有其特点和技巧。以下将针对这些...
数据库性能调整和优化是确保系统高效运行的关键环节,涉及到多个层面的技术和策略。本篇文章将深入探讨DB2数据库性能调整与优化的核心概念、方法以及实践技巧。 首先,理解数据库性能的基础是了解SQL查询执行的原理...
盖国强先生的《Oracle数据库性能优化》一书深入浅出地探讨了这个主题,旨在帮助读者理解并掌握提高Oracle数据库效率的关键技术。 在Oracle数据库性能优化中,首要涉及的知识点是SQL优化。SQL语句是数据库操作的基础...
本合集包含了11个文档,全面涵盖了Oracle数据库性能优化的各种方面,旨在帮助IT专业人士提升数据库运行效率,降低系统瓶颈,确保业务连续性和用户体验。 1. **SQL优化**:SQL查询是数据库操作的核心,优化SQL语句...
### RAC数据库性能优化知识点详解 #### 一、RAC性能优化概述 RAC(Real Application Clusters)是Oracle提供的一种高可用性和高性能的解决方案,它允许多个数据库实例同时访问一个共享的数据集。为了确保RAC环境下...
《Oracle数据库性能优化实践指南》是一本专注于提升Oracle数据库运行效率的专业资料,旨在帮助数据库管理员和IT专业人士解决在日常工作中遇到的各种性能问题。通过深入理解Oracle数据库的工作原理和调优技术,读者...
《牛新庄-db2数据库性能调整优化》这本书深入探讨了DB2数据库的性能优化技术,是DB2数据库管理员和开发人员的重要参考资料。DB2作为IBM公司的一款企业级关系型数据库管理系统,广泛应用于金融、电信、制造等多个行业...
本文将深入探讨“用智能优化限制提高Oracle数据库性能”的核心知识点,通过解析智能优化、Oracle数据库性能提升策略,以及具体的SQL执行计划调整技巧,为读者提供一份全面的指南。 ### 智能优化:提升Oracle数据库...
数据库性能指标是衡量数据库系统运行效率的关键因素,它涉及到数据查询速度、系统响应时间、并发处理能力等多个方面。SQL(Structured Query Language)数据库和Oracle数据库作为两种广泛应用的关系型数据库管理系统...
【数据库性能诊断的七种武器】是一份关于数据库性能优化工具的讲解材料,由专家李轶楠分享。本文将深入探讨在数据库管理中所面临的挑战、调优工具的发展历程,以及核心的诊断工具——“七种武器”。 首先,性能优化...
"SQL SERVER数据库性能优化探讨.pdf" SQL Server 数据库性能优化是指通过各种手段和方法来提高 SQL Server 数据库的性能,从而提高应用程序的响应速度和吞吐量。性能优化是数据库管理员和开发人员的主要任务之一。 ...
为了更全面地评估数据库性能,可以利用`V_$SYSMETRIC_SUMMARY`视图来统计多个关键性能指标的最小值、最大值和平均值。以下查询示例展示了如何计算这些指标: ```sql SELECT CASE METRIC_NAME WHEN '...
本资料集“DB2 UDB AS400数据库性能和查询优化.rar”着重探讨了如何在AS/400环境中提升DB2 UDB的性能并优化查询。 1. **数据库性能优化**:性能优化涉及多个方面,如数据库设计、索引策略、存储配置、SQL语句优化等...
V$SYSSTAT是其中一个关键视图,它能够显示所有会话的Oracle数据库性能统计信息,这对于诊断问题根源和评估性能改善措施的有效性至关重要。 除了V$SYSSTAT之外,还有其他几个重要的V$视图,例如V$SESSION和V$SQL,...
MySQL 实训 5 是一个实践实验,旨在帮助用户理解数据库性能概念,掌握数据库性能监视命令方法,提高数据库性能。下面是相关知识点总结: 1. 数据库性能概念 数据库性能是指数据库在处理用户请求时的响应速度和...
数据库性能优化是一个涵盖广泛的主题,涉及到数据库设计、查询优化、硬件配置、索引策略等多个方面。以下是一些关键的知识点: 1. **查询优化**:这是数据库性能优化的核心部分。通过对SQL查询语句进行分析和改写,...