`
gaojingsong
  • 浏览: 1200805 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【数据库性能统计】

 
阅读更多

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
0
0
分享到:
评论

相关推荐

    we.sql-Oracle数据库性能统计工具

    Oracle脚本工具,查看数据库性能情况,查看当前数据库会话情况 支持10G 以上版本

    试谈数据库性能诊断的七种武器培训课件.ppt

    3. **统计包(STATSPACK)**:在Oracle 8i及之后的版本,STATSPACK是收集数据库性能统计信息的重要工具,它能够生成报告帮助DBA识别性能问题。 4. **10046 Trace和Session调优**:Oracle 9i引入了10046 trace,允许...

    Oracle数据库性能分析

    ### Oracle数据库性能分析 #### 一、Oracle体系结构 Oracle数据库是一个复杂且功能强大的关系型数据库管理系统(RDBMS),其核心组件包括实例和数据库文件。理解Oracle的体系结构对于优化性能至关重要。 - **实例**...

    数据库性能调优--原理与技术1.pdf

    - **AWR (Automatic Workload Repository)**:自动负载存储库是Oracle提供的一种用于收集数据库性能统计数据的机制。通过对AWR报告的分析,可以发现导致性能瓶颈的原因。 - **ADDM (Automatic Database Diagnostic ...

    数据库性能优化方案

    数据库性能优化是IT领域中的一个核心议题,尤其对于处理大量数据的企业级应用而言,高效的数据库性能至关重要。在SQL Server、MySQL和Oracle这三大主流数据库系统中,优化策略各有其特点和技巧。以下将针对这些...

    DB2数据库性能调整和优化

    数据库性能调整和优化是确保系统高效运行的关键环节,涉及到多个层面的技术和策略。本篇文章将深入探讨DB2数据库性能调整与优化的核心概念、方法以及实践技巧。 首先,理解数据库性能的基础是了解SQL查询执行的原理...

    Oracle数据库性能优化 盖国强著

    盖国强先生的《Oracle数据库性能优化》一书深入浅出地探讨了这个主题,旨在帮助读者理解并掌握提高Oracle数据库效率的关键技术。 在Oracle数据库性能优化中,首要涉及的知识点是SQL优化。SQL语句是数据库操作的基础...

    oracle数据库性能优化 合集 中文

    本合集包含了11个文档,全面涵盖了Oracle数据库性能优化的各种方面,旨在帮助IT专业人士提升数据库运行效率,降低系统瓶颈,确保业务连续性和用户体验。 1. **SQL优化**:SQL查询是数据库操作的核心,优化SQL语句...

    RAC数据库性能优化

    ### RAC数据库性能优化知识点详解 #### 一、RAC性能优化概述 RAC(Real Application Clusters)是Oracle提供的一种高可用性和高性能的解决方案,它允许多个数据库实例同时访问一个共享的数据集。为了确保RAC环境下...

    Oracle数据库性能优化实践指南

    《Oracle数据库性能优化实践指南》是一本专注于提升Oracle数据库运行效率的专业资料,旨在帮助数据库管理员和IT专业人士解决在日常工作中遇到的各种性能问题。通过深入理解Oracle数据库的工作原理和调优技术,读者...

    牛新庄-db2数据库性能调整优化

    《牛新庄-db2数据库性能调整优化》这本书深入探讨了DB2数据库的性能优化技术,是DB2数据库管理员和开发人员的重要参考资料。DB2作为IBM公司的一款企业级关系型数据库管理系统,广泛应用于金融、电信、制造等多个行业...

    用智能优化限制提高Oracle数据库性能

    本文将深入探讨“用智能优化限制提高Oracle数据库性能”的核心知识点,通过解析智能优化、Oracle数据库性能提升策略,以及具体的SQL执行计划调整技巧,为读者提供一份全面的指南。 ### 智能优化:提升Oracle数据库...

    数据库性能指标,其中包括sql数据库和oracle数据库的性能指标介绍

    数据库性能指标是衡量数据库系统运行效率的关键因素,它涉及到数据查询速度、系统响应时间、并发处理能力等多个方面。SQL(Structured Query Language)数据库和Oracle数据库作为两种广泛应用的关系型数据库管理系统...

    数据库性能诊断的七种武器.ppt

    【数据库性能诊断的七种武器】是一份关于数据库性能优化工具的讲解材料,由专家李轶楠分享。本文将深入探讨在数据库管理中所面临的挑战、调优工具的发展历程,以及核心的诊断工具——“七种武器”。 首先,性能优化...

    SQL SERVER数据库性能优化探讨.pdf

    "SQL SERVER数据库性能优化探讨.pdf" SQL Server 数据库性能优化是指通过各种手段和方法来提高 SQL Server 数据库的性能,从而提高应用程序的响应速度和吞吐量。性能优化是数据库管理员和开发人员的主要任务之一。 ...

    查看数据库性能

    为了更全面地评估数据库性能,可以利用`V_$SYSMETRIC_SUMMARY`视图来统计多个关键性能指标的最小值、最大值和平均值。以下查询示例展示了如何计算这些指标: ```sql SELECT CASE METRIC_NAME WHEN '...

    DB2 UDB AS400数据库性能和查询优化.rar

    本资料集“DB2 UDB AS400数据库性能和查询优化.rar”着重探讨了如何在AS/400环境中提升DB2 UDB的性能并优化查询。 1. **数据库性能优化**:性能优化涉及多个方面,如数据库设计、索引策略、存储配置、SQL语句优化等...

    oracle11g性能优化笔记第五部

    V$SYSSTAT是其中一个关键视图,它能够显示所有会话的Oracle数据库性能统计信息,这对于诊断问题根源和评估性能改善措施的有效性至关重要。 除了V$SYSSTAT之外,还有其他几个重要的V$视图,例如V$SESSION和V$SQL,...

    MySQL实训5.doc

    MySQL 实训 5 是一个实践实验,旨在帮助用户理解数据库性能概念,掌握数据库性能监视命令方法,提高数据库性能。下面是相关知识点总结: 1. 数据库性能概念 数据库性能是指数据库在处理用户请求时的响应速度和...

    数据库性能优化详解数据库性能优化详解.doc

    数据库性能优化是一个涵盖广泛的主题,涉及到数据库设计、查询优化、硬件配置、索引策略等多个方面。以下是一些关键的知识点: 1. **查询优化**:这是数据库性能优化的核心部分。通过对SQL查询语句进行分析和改写,...

Global site tag (gtag.js) - Google Analytics