㈠ 背景介绍: ㈡ 定位原因: INSERT INTO t (col1, col2, col3, col4, col5, col6, col7) VALUES (3532082239485507011_130_99, 130_99, 130, 99, 3532082239485507011, 2172353000317425008, 29078) ㈢ 处理思路: select trx_id,trx_state,trx_started,tr
㈠ 背景介绍:INSERT INTO t (col1, col2, col3, col4, col5, col6, col7) VALUES ('3532082239485507011_130_99', '130_99', 130, 99, 3532082239485507011, 2172353000317425008, 29078)
select trx_id,trx_state,trx_started,trx_requested_lock_id,trx_weight,trx_mysql_thread_id from information_schema.innodb_trx where trx_state='RUNNING';
㈣ 我的疑问:
㈤ 原来如此:
㈥ 模拟场景:
Session_A: mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> select emp_no,hire_date from employees where emp_no=10170 for update; +--------+------------+ | emp_no | hire_date | +--------+------------+ | 10170 | 1986-01-02 | +--------+------------+ 1 row in set (0.00 sec) Session_B: mysql> select emp_no,hire_date,sleep(3) from employees where emp_no=10170 for update;
过段时间在A做commit,B会执行、并被记录到slow log中:
# Time: 140818 22:37:31 # User@Host: root[root] @ localhost [] Id: 1 # Query_time: 3.049016 Lock_time: 0.018891 Rows_sent: 1 Rows_examined: 1 use employees; SET timestamp=1408372651; select emp_no,hire_date,sleep(3) from employees where emp_no=10170 for update;
Session_A: mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> select emp_no,hire_date from employees where emp_no=10170 for update; +--------+------------+ | emp_no | hire_date | +--------+------------+ | 10170 | 1986-01-02 | +--------+------------+ 1 row in set (0.00 sec) Session_B: mysql> select emp_no,hire_date from employees where emp_no=10170 for update;
㈦ 我的收获:
我们日常做性能剖析实际上应该包括2个方面:
1)基于执行时间的分析
2)基于等待时间的分析
By water
Good Luck!