未提交事務造成的等待事件
開發人員過來說程式中無法修改資料
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
檢視是如下SQL語句造成的
UPDATE
MemberAttribute
SET name = '而',required = 1, enabled = 1, sequence = 34
, memberTemplate_id = 698
WHERE
id = 284 and deleted = false;
剛開始一直考慮死鎖,但一直無死鎖資訊
如果單獨的一條sql是不會千萬死鎖的,肯定有其他語句
檢視未提交的事務
SELECT
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.ID,
b.USER,
b.DB,
b.COMMAND,
b.TIME,
b.STATE,
b.INFO,
c.PROCESSLIST_USER,
c.PROCESSLIST_HOST,
c.PROCESSLIST_DB,
d.SQL_TEXT
FROM
information_schema.INNODB_TRX a
LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id
AND b.COMMAND = 'Sleep'
LEFT JOIN PERFORMANCE_SCHEMA.threads c ON b.id = c.PROCESSLIST_ID
LEFT JOIN PERFORMANCE_SCHEMA.events_statements_current d ON d.THREAD_ID = c.THREAD_ID;
確實有未提交事務
檢視未提交執行緒id
SELECT * FROM information_schema.INNODB_TRX \G
*************************** 12. row ***************************
trx_id: 188721461
trx_state: RUNNING
trx_started: 2016-01-06 09:41:22
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 26
trx_mysql_thread_id: 2122328
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 0
trx_lock_structs: 24
trx_lock_memory_bytes: 6544
trx_rows_locked: 3003
trx_rows_modified: 2
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 0
trx_is_read_only: 0
trx_autocommit_non_locking: 0
與niravana資料庫相關的程式只有2122328
kill 2122328
再次修改即可
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
檢視是如下SQL語句造成的
UPDATE
MemberAttribute
SET name = '而',required = 1, enabled = 1, sequence = 34
, memberTemplate_id = 698
WHERE
id = 284 and deleted = false;
剛開始一直考慮死鎖,但一直無死鎖資訊
如果單獨的一條sql是不會千萬死鎖的,肯定有其他語句
檢視未提交的事務
SELECT
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.ID,
b.USER,
b.DB,
b.COMMAND,
b.TIME,
b.STATE,
b.INFO,
c.PROCESSLIST_USER,
c.PROCESSLIST_HOST,
c.PROCESSLIST_DB,
d.SQL_TEXT
FROM
information_schema.INNODB_TRX a
LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id
AND b.COMMAND = 'Sleep'
LEFT JOIN PERFORMANCE_SCHEMA.threads c ON b.id = c.PROCESSLIST_ID
LEFT JOIN PERFORMANCE_SCHEMA.events_statements_current d ON d.THREAD_ID = c.THREAD_ID;
確實有未提交事務
檢視未提交執行緒id
SELECT * FROM information_schema.INNODB_TRX \G
*************************** 12. row ***************************
trx_id: 188721461
trx_state: RUNNING
trx_started: 2016-01-06 09:41:22
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 26
trx_mysql_thread_id: 2122328
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 0
trx_lock_structs: 24
trx_lock_memory_bytes: 6544
trx_rows_locked: 3003
trx_rows_modified: 2
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 0
trx_is_read_only: 0
trx_autocommit_non_locking: 0
與niravana資料庫相關的程式只有2122328
kill 2122328
再次修改即可
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24742969/viewspace-1972497/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring中的事務提交事件Spring事件
- SQL Server 查出未提交事務(長事務)SQLSQLServer
- 事務上的等待事件 —— enq: UL - contention事件ENQ
- 檢視造成等待事件的具體SQL語句事件SQL
- 索引分裂造成的index contention等待事件的診斷索引Index事件
- SQL*Net more data to client 等待事件造成的效能問題SQLclient事件
- 探究MySQL的DML提交事務的意義和DQL是否有必要提交事務MySql
- MySQL通過performance_schema定位未提交事務所執行的SQLMySqlORM
- 為DbContextScope新增資料庫事務提交完成事件Context資料庫事件
- 檢視mysql沒提交的事務MySql
- MySQL事務兩段式提交MySql
- MySQL 事務提交過程MySql
- java 事務提交/回滾Java
- 事件與事務事件
- [20151218]未提交事務儲存在那裡.txt
- vitess兩階段提交事務Vite
- MySQL事務提交流程概述MySql
- 【等待事件】ORACLE常見等待事件事件Oracle
- 【等待事件】等待事件系列(5.1)--Enqueue(佇列等待)事件ENQ佇列
- Laravel eloquent 的事務與事件Laravel事件
- MySQL實現事務的提交和回滾MySql
- Oracle的等待事件Oracle事件
- MySQl事務建立,開始以及提交MySql
- 等待事件事件
- 使用日誌挖掘來挖掘TX等待的事務
- MySQL事務提交的三個階段介紹MySql
- Entity Framework中 批量提交 事務處理Framework
- Mysql 從庫如果有未提交的事務主庫ddl操作導致主從延遲MySql
- Solidity事件,等待事件Solid事件
- 網路上的等待事件事件
- RAC中的等待事件事件
- ORACLE中的等待事件Oracle事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 【等待事件之二】log 相關的等待事件
- 事務槽引起的 ORA-600 事件事件
- @Transactional註解管理事務和手動提交事務
- 等待事件分析事件
- oracle等待事件Oracle事件