最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot如何監(jiān)控SQL運(yùn)行情況?

 更新時(shí)間:2022年04月18日 15:15:10   作者:劍圣無痕  
Druid是Java語言中最好的數(shù)據(jù)庫連接池,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot如何監(jiān)控SQL運(yùn)行情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

監(jiān)控SQL是現(xiàn)在項(xiàng)目運(yùn)維中必要的一部分,通過SQL監(jiān)控我們能夠明顯的分析系統(tǒng)那些地方存在問題,從而有效的進(jìn)行SQL優(yōu)化,提升系統(tǒng)的性能。那么常見的SQL監(jiān)控方式又那些呢?

MYSQL監(jiān)控慢SQL

MySLQ如果需要監(jiān)控慢SQL,需要在/ect/my.cnf文件中進(jìn)行如下配置:

slow_query_log = ON
slow_query_log_file = /data/mysql/slow.log
long_query_time = 2
  • slow_query_log:打開慢SQL日志
  • slow_query_log_file:輸出慢SQL文件的路徑
  • long_query_time : 定義SQl時(shí)間為多久為慢SQL

輸出結(jié)果

select userid from t_user;
# Time: 2022-04-16T20:40:30.411674Z
# Query_time: 90.438767  Lock_time: 0.000000 Rows_sent: 43  Rows_examined: 25360591

輸出SQL的查詢時(shí)間、鎖定時(shí)間、影響的行數(shù)等。

Druid監(jiān)控慢SQL

Spring Boot默認(rèn)使用的數(shù)據(jù)庫連接池為HikariCP,但是Druid連接池為阿里巴巴開發(fā)的,提供強(qiáng)大的監(jiān)控和擴(kuò)展功能,如果項(xiàng)目中使用Druid連接池而沒有開啟SQL監(jiān)控,那么對(duì)于項(xiàng)目來說就是一種浪費(fèi),那么Spring Boot Druid如何監(jiān)控SQL呢?

添加Druid依賴

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>	
		
	 <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		
      <!--druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>${druid.version}</version>
		</dependency>

Yml文件中配置Druid屬性

spring:
  messages:
    encoding: UTF-8
    baseName: i18n/messages
    fallbackToSystemLocale: false
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&characterEncoding=utf8&serverTimezone=Hongkong&useSSL=true&nullNamePatternMatchesAll=true&autoReconnect=true
      username: xx
      password: yy
      #初始連接池值
      initial-size: 10
      //最大連接數(shù)
      max-active: 100
      //最小連接數(shù)
      min-idle: 10
      #連接等待時(shí)間
      max-wait: 60000
      #
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #配置StatViewServlet監(jiān)控頁面
      stat-view-servlet:
            #開啟
            enabled: true
            #訪問監(jiān)控路徑的地址
            url-pattern: /druid/*
            #不允許清空,重新統(tǒng)計(jì)
            reset-enable: false
            #登錄用戶名
            login-username: admin
            #登錄密碼
            login-password: admin
            #允許訪問地址
            allow: 127.0.0.1
      ########## 配置WebStatFilter,用于采集web關(guān)聯(lián)監(jiān)控的數(shù)據(jù) #########
      web-stat-filter:
        #啟動(dòng)statFilter
        enabled: true
        #排除的url
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
        #開啟session統(tǒng)計(jì)
        session-stat-enable: true  
        #session的最大個(gè)數(shù),默認(rèn)為100
        session-stat-max-count: 1000
        #過濾的url
        url-pattern: /*
      filter:
           stat:
             #開啟慢sql統(tǒng)計(jì)
             log-slow-sql: true
             #慢sql的時(shí)間
             slow-sql-millis: 2000
             merge-sql: true
             #開啟druid datasource監(jiān)控
             enabled: true
           wall:
             config:
             multi-statement-allow: true

監(jiān)控頁面

1.啟動(dòng)項(xiàng)目,訪問http://ip:port/druid, 進(jìn)入登錄頁面,輸入用戶名和密碼登錄

2.數(shù)據(jù)源頁面,該頁面配置的是當(dāng)前dataSource的相關(guān)信息

3.SQL監(jiān)控頁面

此頁面會(huì)展示所有執(zhí)行sql的語句,包含SQL執(zhí)行次數(shù)、執(zhí)行的時(shí)間、事務(wù)執(zhí)行次數(shù)、最慢執(zhí)行時(shí)間等信息

4.URI監(jiān)控,統(tǒng)計(jì)了所有Controller接口的訪問以及執(zhí)行情況

5.去除相關(guān)的廣告

訪問監(jiān)控頁面的時(shí)候,你可能會(huì)在頁面底部(footer)看到阿里巴巴的廣告 原因:引入的druid的jar包中的common.js(里面有一段js代碼是給頁面的footer追加廣告的) 去除的方案有兩種

5.1 直接注釋源碼中的的相關(guān)代碼

找到 druid-1.19 jar包 在common.j中直接注釋如下代碼即可

  // this.buildFooter();

5.2 自定義過濾來去除廣告

@WebFilter(urlPatterns = "/druid/js/common.js")
public class RemoveDruidAdvertFilter implements Filter
{
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException
    {
        String text = Utils.readFromResource("support/http/resources/js/common.js");
        text = text.replace("this.buildFooter();", "");
        response.getWriter().write(text);
    }
}

注意需要在中添加相關(guān)的過濾器

@SpringBootApplication
@ServletComponentScan("com.skywares.fw.common.filter")//配置過濾器的地址
public class FwCoreApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(FwCoreApplication.class, args);
    }
}

特殊說明

目前Driud監(jiān)控SQL功能只能針對(duì)單數(shù)據(jù)庫的情況,對(duì)于多數(shù)據(jù)源的場(chǎng)景無法滿足。

Prometheus+grafana實(shí)現(xiàn)SQL監(jiān)控

Prometheus+grafana實(shí)現(xiàn)SQL監(jiān)控方案比較復(fù)雜,本文中就不詳細(xì)講解了,在后續(xù)的性能優(yōu)化專欄中會(huì)重點(diǎn)講解。

結(jié)尾

SQL監(jiān)控是項(xiàng)目中比較重要的一環(huán),本文從幾個(gè)方法來講解如何監(jiān)控SQL,如果項(xiàng)目中還沒使用此功能,那么趕緊去開啟吧。

到此這篇關(guān)于Spring Boot如何監(jiān)控SQL運(yùn)行情況的文章就介紹到這了,更多相關(guān)SpringBoot監(jiān)控SQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot中的properties參數(shù)配置詳解

    spring boot中的properties參數(shù)配置詳解

    這篇文章主要介紹了spring boot中的properties參數(shù)配置,需要的朋友可以參考下
    2017-09-09
  • Java編程中二維數(shù)組的初始化和基本操作實(shí)例

    Java編程中二維數(shù)組的初始化和基本操作實(shí)例

    這篇文章主要介紹了Java編程中二維數(shù)組的初始化和基本操作實(shí)例,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • SpringBoot中整合MyBatis-Plus的方法示例

    SpringBoot中整合MyBatis-Plus的方法示例

    這篇文章主要介紹了SpringBoot中整合MyBatis-Plus的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • mybatis注解與xml常用語句匯總

    mybatis注解與xml常用語句匯總

    最近一直在用mybatis,由于需要使用到了動(dòng)態(tài)sql,遇到了一些問題,現(xiàn)在來總結(jié)一下,經(jīng)驗(yàn)教訓(xùn)。下面這篇文章主要給大家總結(jié)介紹了mybatis注解與xml常用語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • Java多線程之synchronized同步代碼塊詳解

    Java多線程之synchronized同步代碼塊詳解

    這篇文章主要為大家詳細(xì)介紹了Java多線程之synchronized同步代碼塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 通過實(shí)例解析java8中的parallelStream

    通過實(shí)例解析java8中的parallelStream

    這篇文章主要介紹了通過實(shí)例解析java8中的parallelStream,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java動(dòng)態(tài)顯示文件上傳進(jìn)度實(shí)現(xiàn)代碼

    Java動(dòng)態(tài)顯示文件上傳進(jìn)度實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Java動(dòng)態(tài)顯示文件上傳進(jìn)度實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java-lambda表達(dá)式入門看這一篇就夠了

    Java-lambda表達(dá)式入門看這一篇就夠了

    lambda表達(dá)式最簡(jiǎn)單的作用就是用于簡(jiǎn)化創(chuàng)建匿名內(nèi)部類對(duì)象,Lambda表達(dá)式是一個(gè)可傳遞的代碼塊,可以在以后執(zhí)行一次或多次,下面通過本文給大家介紹Java-lambda表達(dá)式入門教程,感興趣的朋友一起看看吧
    2021-05-05
  • 關(guān)于Java中修飾符的總結(jié)(fina除外)

    關(guān)于Java中修飾符的總結(jié)(fina除外)

    下面小編就為大家?guī)硪黄P(guān)于Java中修飾符的總結(jié)(fina除外)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Struts2的配置 struts.xml Action詳解

    Struts2的配置 struts.xml Action詳解

    這篇文章主要介紹了Struts2的配置 struts.xml Action詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論

洛川县| 台安县| 红原县| 禹城市| 宁城县| 徐水县| 喀喇| 恭城| 台东县| 兴海县| 武冈市| 碌曲县| 万载县| 曲周县| 枝江市| 青阳县| 普洱| 韶山市| 澄迈县| 南宫市| 平遥县| 宜城市| 高州市| 容城县| 泸定县| 贵南县| 辰溪县| 从江县| 西和县| 车险| 丹阳市| 潜山县| 法库县| 龙海市| 黎川县| 大庆市| 聊城市| 吴忠市| 于都县| 岢岚县| 青浦区|