Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit 6b03402

Browse files
committed
Merge pull request #31 from JesperWisborgKrogh/dev/20141021_innodb_lock_waits
Merge innodb_lock_waits view from Jesper
2 parents 7ddf1d7 + 59f198c commit 6b03402

File tree

4 files changed

+192
-0
lines changed

4 files changed

+192
-0
lines changed

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,35 @@ mysql> select * from innodb_buffer_stats_by_table;
146146
+--------------------------+------------------------------------+------------+-----------+-------+--------------+-----------+-------------+
147147
```
148148

149+
#### innodb_lock_waits / x$innodb_lock_waits
150+
151+
##### Description
152+
153+
Gives a snapshot of which InnoDB locks transactions are waiting for.
154+
155+
##### Example
156+
157+
```SQL
158+
mysql> SELECT * FROM innodb_lock_waits\G
159+
*************************** 1. row ***************************
160+
waiting_trx_id: 805505
161+
waiting_thread: 78
162+
waiting_query: UPDATE t1 SET val = 'c2' WHERE id = 3
163+
waiting_lock_id: 805505:132:3:28
164+
waiting_lock_mode: X
165+
waiting_lock_type: RECORD
166+
waiting_lock_table: `db1`.`t1`
167+
waiting_lock_index: PRIMARY
168+
blocking_trx_id: 805504
169+
blocking_thread: 77
170+
blocking_query: UPDATE t1 SET val = CONCAT('c1', SLEEP(10)) WHERE id = 3
171+
blocking_lock_id: 805504:132:3:28
172+
blocking_lock_mode: X
173+
blocking_lock_type: RECORD
174+
blocking_lock_table: `db1`.`t1`
175+
blocking_lock_index: PRIMARY
176+
```
177+
149178
#### io_by_thread_by_latency / x$io_by_thread_by_latency
150179

151180
##### Description

sys_56.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ SOURCE ./functions/ps_thread_stack.sql
3131

3232
SOURCE ./views/i_s/innodb_buffer_stats_by_schema.sql
3333
SOURCE ./views/i_s/innodb_buffer_stats_by_table.sql
34+
SOURCE ./views/i_s/innodb_lock_waits.sql
3435
SOURCE ./views/i_s/schema_object_overview.sql
3536

3637
SOURCE ./views/p_s/ps_check_lost_instrumentation.sql

sys_57.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ SOURCE ./functions/ps_thread_stack.sql
3131

3232
SOURCE ./views/i_s/innodb_buffer_stats_by_schema.sql
3333
SOURCE ./views/i_s/innodb_buffer_stats_by_table.sql
34+
SOURCE ./views/i_s/innodb_lock_waits.sql
3435
SOURCE ./views/i_s/schema_object_overview.sql
3536

3637
SOURCE ./views/p_s/ps_check_lost_instrumentation.sql

views/i_s/innodb_lock_waits.sql

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
/* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
2+
3+
This program is free software; you can redistribute it and/or modify
4+
it under the terms of the GNU General Public License as published by
5+
the Free Software Foundation; version 2 of the License.
6+
7+
This program is distributed in the hope that it will be useful,
8+
but WITHOUT ANY WARRANTY; without even the implied warranty of
9+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10+
GNU General Public License for more details.
11+
12+
You should have received a copy of the GNU General Public License
13+
along with this program; if not, write to the Free Software
14+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
15+
16+
/*
17+
* View: innodb_lock_waits
18+
*
19+
* Give a snapshot of which InnoDB locks transactions are waiting for.
20+
*
21+
* Versions: 5.1+ (5.1 required InnoDB Plugin with I_S tables)
22+
*
23+
* mysql> SELECT * FROM innodb_lock_waits\G
24+
* *************************** 1. row ***************************
25+
* waiting_trx_id: 805505
26+
* waiting_thread: 78
27+
* waiting_query: UPDATE t1 SET val = 'c2' WHERE id = 3
28+
* waiting_lock_id: 805505:132:3:28
29+
* waiting_lock_mode: X
30+
* waiting_lock_type: RECORD
31+
* waiting_lock_table: `db1`.`t1`
32+
* waiting_lock_index: PRIMARY
33+
* blocking_trx_id: 805504
34+
* blocking_thread: 77
35+
* blocking_query: UPDATE t1 SET val = CONCAT('c1', SLEEP(10)) WHERE id = 3
36+
* blocking_lock_id: 805504:132:3:28
37+
* blocking_lock_mode: X
38+
* blocking_lock_type: RECORD
39+
* blocking_lock_table: `db1`.`t1`
40+
* blocking_lock_index: PRIMARY
41+
* 1 row in set (0.00 sec)
42+
*
43+
*/
44+
45+
CREATE OR REPLACE
46+
ALGORITHM = TEMPTABLE
47+
DEFINER = 'root'@'localhost'
48+
SQL SECURITY INVOKER
49+
VIEW innodb_lock_waits (
50+
waiting_trx_id,
51+
waiting_thread,
52+
waiting_query,
53+
waiting_lock_id,
54+
waiting_lock_mode,
55+
waiting_lock_type,
56+
waiting_lock_table,
57+
waiting_lock_index,
58+
blocking_trx_id,
59+
blocking_thread,
60+
blocking_query,
61+
blocking_lock_id,
62+
blocking_lock_mode,
63+
blocking_lock_type,
64+
blocking_lock_table,
65+
blocking_lock_index
66+
) AS
67+
SELECT r.trx_id AS waiting_trx_id,
68+
r.trx_mysql_thread_id AS waiting_thread,
69+
sys.format_statement(r.trx_query) AS waiting_query,
70+
rl.lock_id AS waiting_lock_id,
71+
rl.lock_mode AS waiting_lock_mode,
72+
rl.lock_type AS waiting_lock_type,
73+
rl.lock_table AS waiting_lock_table,
74+
rl.lock_index AS waiting_lock_index,
75+
b.trx_id AS blocking_trx_id,
76+
b.trx_mysql_thread_id AS blocking_thread,
77+
sys.format_statement(b.trx_query) AS blocking_query,
78+
bl.lock_id AS blocking_lock_id,
79+
bl.lock_mode AS blocking_lock_mode,
80+
bl.lock_type AS blocking_lock_type,
81+
bl.lock_table AS blocking_lock_table,
82+
bl.lock_index AS blocking_lock_index
83+
FROM information_schema.INNODB_LOCK_WAITS w
84+
INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id
85+
INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id
86+
INNER JOIN information_schema.INNODB_LOCKS bl ON bl.lock_id = w.blocking_lock_id
87+
INNER JOIN information_schema.INNODB_LOCKS rl ON rl.lock_id = w.requested_lock_id;
88+
89+
/*
90+
* View: x$innodb_lock_waits
91+
*
92+
* Give a snapshot of which InnoDB locks transactions are waiting for.
93+
*
94+
* Versions: 5.1+ (5.1 required InnoDB Plugin with I_S tables)
95+
*
96+
* mysql> SELECT * FROM x$innodb_lock_waits\G
97+
* *************************** 1. row ***************************
98+
* waiting_trx_id: 805505
99+
* waiting_thread: 78
100+
* waiting_query: UPDATE t1 SET val = 'c2' WHERE id = 3
101+
* waiting_lock_id: 805505:132:3:28
102+
* waiting_lock_mode: X
103+
* waiting_lock_type: RECORD
104+
* waiting_lock_table: `db1`.`t1`
105+
* waiting_lock_index: PRIMARY
106+
* blocking_trx_id: 805504
107+
* blocking_thread: 77
108+
* blocking_query: UPDATE t1 SET val = CONCAT('c1', SLEEP(10)) WHERE id = 3
109+
* blocking_lock_id: 805504:132:3:28
110+
* blocking_lock_mode: X
111+
* blocking_lock_type: RECORD
112+
* blocking_lock_table: `db1`.`t1`
113+
* blocking_lock_index: PRIMARY
114+
* 1 row in set (0.00 sec)
115+
*
116+
*/
117+
118+
CREATE OR REPLACE
119+
ALGORITHM = TEMPTABLE
120+
DEFINER = 'root'@'localhost'
121+
SQL SECURITY INVOKER
122+
VIEW x$innodb_lock_waits (
123+
waiting_trx_id,
124+
waiting_thread,
125+
waiting_query,
126+
waiting_lock_id,
127+
waiting_lock_mode,
128+
waiting_lock_type,
129+
waiting_lock_table,
130+
waiting_lock_index,
131+
blocking_trx_id,
132+
blocking_thread,
133+
blocking_query,
134+
blocking_lock_id,
135+
blocking_lock_mode,
136+
blocking_lock_type,
137+
blocking_lock_table,
138+
blocking_lock_index
139+
) AS
140+
SELECT r.trx_id AS waiting_trx_id,
141+
r.trx_mysql_thread_id AS waiting_thread,
142+
r.trx_query AS waiting_query,
143+
rl.lock_id AS waiting_lock_id,
144+
rl.lock_mode AS waiting_lock_mode,
145+
rl.lock_type AS waiting_lock_type,
146+
rl.lock_table AS waiting_lock_table,
147+
rl.lock_index AS waiting_lock_index,
148+
b.trx_id AS blocking_trx_id,
149+
b.trx_mysql_thread_id AS blocking_thread,
150+
b.trx_query AS blocking_query,
151+
bl.lock_id AS blocking_lock_id,
152+
bl.lock_mode AS blocking_lock_mode,
153+
bl.lock_type AS blocking_lock_type,
154+
bl.lock_table AS blocking_lock_table,
155+
bl.lock_index AS blocking_lock_index
156+
157+
FROM information_schema.INNODB_LOCK_WAITS w
158+
INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id
159+
INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id
160+
INNER JOIN information_schema.INNODB_LOCKS bl ON bl.lock_id = w.blocking_lock_id
161+
INNER JOIN information_schema.INNODB_LOCKS rl ON rl.lock_id = w.requested_lock_id;

0 commit comments

Comments
 (0)