程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [MySQL]生產環境MySQL數據庫事務一直在RUNNING

[MySQL]生產環境MySQL數據庫事務一直在RUNNING

編輯:MySQL綜合教程

[MySQL]生產環境MySQL數據庫事務一直在RUNNING


前言:

運營人員反映,有一單子提交卡住了,頁面一直沒有返回。

1,剛開始懷疑是應用服務器或者db壓力過高hang住了,馬上去check應用服務器以及db的負載,看起來都OK,蠻低的,應該不是DB性能問題。

2,最後去看下是否是表鎖住了,查看到有2個事務一直RUNNING,沒有結束。,

mysql> select * from INNODB_TRX\G;

3,通過trx_mysql_thread_id: 1662332的去查詢information_schema.processlist找到執行事務的客戶端請求的SQL線程

4,通過SQL線程,找到應用程序的IP地址以及端口10.2xx.3.xx:23452

5,找到工程之後,再去查看tomcat的應用報錯信息,如下:

--- Check the select ID, SHOP_NAME, SHOP_CLASSIFICATION_ID, LEGAL_PERSON, CORPORATION, SHOP_TEL, ADDRESS, ZIP_CODE, LEGAL_PERSON_MOBILE, STAT, AUTHENTICATE, CREDIT, LEVEL, SCORE, LICENSE_PATH, BUSSINESS_RANGE, MALL_ID, FLOOR, BIS_COMPANY, STORE_NO, MANAGER_NAME, MANAGER_TEL, BRIEF, LOGO, FAVOUR_NUM, HAS_WAREHOUSE, DESCRIPTION_FIT, SERVICE, SPEED, BACKGROUND, BIS_CONT_ID,BIS_SHOP_ID, CREATED_DATE, UPDATED_DATE,ENGLISH_PREF from SHOP where SHOP_NAME = ? .

6,現在很明顯了,應該是事務未提交,配合開發去check所有的java代碼,發現有2處地方,在Exception e裡面忘記寫rollback了。
} catch (SQLException e) {
}

總結:開發人員,寫數據庫事務的時候,記得在異常處理Exception的時候,別忘記了rollback。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved