`
gaojingsong
  • 浏览: 1154361 次
  • 性别: 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
分享到:
评论

相关推荐

    DB2 数据库性能监控和优化

    DB2数据库性能优化,以及性能监控 有关性能的一些基本要素 更新目录统计信息,这部分强调收集和维护最新数据库统计信息的重要性,缺少这项工作常常 是导致许多性能问题的源头所在。 监控和调优数据库配置参数,这...

    使用JAVA内存数据库h2database性能优化

    我们在开发应用都知道IO是系统性能的瓶颈,在应用开发中,我们会经常碰到以下问题: 1.系统在不断实时地访问数据库时,一秒钟对同一个表操作几千,几万次以上,导致数据表死锁或则处理太慢; 2.对数据实时计算,...

    Oracle数据库系统性能优化策略

    计阶段进行数据库性能优化的成本最低,收益最大。在成品阶段进行数据库 性能优化的成本最高,收益最小。数据库的优化可以通过对网络、硬件、操 作系统、数据库参数和应用程序的优化来进行。最常见的优化手段就是对硬...

    Oracle数据库性能优化的艺术 (文平) 高清PDF扫描版

    《oracle数据库性能优化的艺术》是资深数据库专家、unix系统专家、系统架构师近20年工作经验的结晶。 《oracle数据库性能优化的艺术》内容高屋建瓴,用辩证法中的系统化分析方法,不仅从硬件(服务器系统、存储系统...

    Oracle数据库10g自我管理功能之自动性能诊断

    本白皮书论述了Oracle新性能诊断和监控技术的基础架构和部件,该技术内置于数据库服务器中,并通过OracleEM实现外部化。本白皮书介绍的主要组件包括自动工作负载信息库 (AWR)、自动数据库诊断监控程序 (ADDM) 和 ...

    oracle数据库高级技术交流- 性能调优

    主要讲述了, 数据库性能优化原理 交易系统和查询统计系统的差异分析 Oracle SQL性能优化 论全表扫描

    Oracle的自动数据库诊断监控程序剖析

    有了 Oracle 数据库 10g,您就有了一位自动数据库诊断监控程序 (ADDM) 形式的助理 DBA,这种机器人式的 DBA 会不知疲倦地反复搜索数据库性能统计,以标识瓶颈、分析 SQL 语句、并据此提供多种改进性能的建议,本文对...

    论文研究-数据库系统性能模型建模方法综述.pdf

    当前的性能模型主要分为分析型和统计型两种。分析型模型需要深入研究数据库系统查询执行过程,对动态查询的适应性较好,无须成本高昂的采样实验,但在查询并行执行情景下建模复杂,对不同的数据库系统有不同的理论...

    高性能动态SQL Oracle数据安全 Oracle 数据库的聚簇技术 等等

    Oracle监控数据库性能的SQL汇总 36 Oracle如何精确计算row的大小 38 PL/SQL编程 39 数据库的分组问题 41 oracle知识 42 数据库的导入导出 42 Oracle查询中rownum与Order by查询 45 oracle9i小结 46 Oracle 数据库的...

    Oracle数据库的性能优化

    Or ac le 数据库在运行过程中会产生大量数据,消耗系统资源,增加系统开销,使数据库变得不易管理,输入/输出缓慢,性能大幅降低,甚至影响正常的生产,因此迫切需要对数据库进行优化。优化的目的是使数据库不仅能...

    Oracle数据库日常维护方案书.docx

    数据库性能优化 检查 Oracle 数据库性能 检查数据库的等待事件 Disk Read 最高的 SQL 语句的获取 查找前十条性能差的 sql 等待时间最多的 个系统等待事件的获取 检查运行很久的 SQL 检查消耗 CPU 最高的...

    系统性能优化(数据库)

    IT行业的统计显示,数据库能力的提升,70%是取决于服务器硬件的优劣,剩下的30%是可以人为调优的。在可以人为调优的部分中,60%的问题发生在SQL部分,20%发生在数据库设计部分。由于我们对服务器硬件的选择往往...

    某银行数据库月度巡检报告

    八、 数据库性能 31 (一) 数据库各项基于时间模型的统计信息 31 (二) 数据库负荷压力及各项命中率分析 32 (三) 等待事件 33 (四) 统计信息分析 34 (五) 数据库I/O性能 36 (六) 索引/行迁移/行链 38 (七) 失效对象 39...

    ORACLE数据库复制

    采用复制技术后,将这些大型数据复制到另外一个数据库中,对这些大数据的查询统计操作放在另外的一台数据库服务器上进行,即使受影响,也只是影响局部的查询统计功能,其他正常的业务处理不受影响。 但是,使用复制...

    《Oracle DBA手记——数据库诊断案例与性能优化实践》第一章 to be continued

    ├─第一篇 DBA工作手记 │ 01.Eygle的DBA工作手记 │ 02.Yangtingkun的DBA工作手记 ... 02.Oracle数据库性能与统计信息 03.聚簇因子、柱状图与执行计划 04.表碎片及分页查询优化 05.一次排序的调整与优化

    Lepus(天兔)是数据库企业监控系统,针对互联网企业开发的一款专业、强大的企业数据库监控管理系统.rar

    Lepus可以在数据库出现故障或者潜在性能问题时,根据用户设置及时将数据库的异常进行报警通知到数据库管理员进行处理和优化,帮助企业解决数据库性能监控问题,及时发现性能和瓶颈,避免由数据库潜在问题造成的直接...

    sql server2005/2008 性能优化大全 .pptx

    SQL2005性能优化大全,sqlserver性能优化,包括:什么叫做索引、利用索引优化sqlserver查询、使用数据库分区表提高程序检索效率、提高数据库查询效率的实用方法...对于数据库性能优化,尤其是大数据量的数据表很有帮助!

    数据库学习基础之名词解释

    SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。 其主要特点如下:  (1)高性能设计,可充分利用...

    一款HTAP数据库基准测试工具,实现Hybench基准测试,集成测试数据集生成,HTAP负载运行、新鲜度度量、测试结果统计分析等

    为数据库厂商和第三方评测机构提供HTAP数据库基准性能的评价方法及工具,引导HTAP数据库的技术研究方向,帮助用户进行HTAP数据库选型。 Hybench实现了Hybench基准测试,集成了测试数据集生成,HTAP负载运行、新鲜度...

Global site tag (gtag.js) - Google Analytics