connect con1,localhost,root,,; SET SESSION innodb_lock_wait_timeout=1;
connection default; SET SESSION innodb_lock_wait_timeout=1;
# Case1: Test primary index
CREATE TABLE t1(
seat_id INT,
state INT,
PRIMARY KEY(seat_id)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES(1,0), (2,0), (3,0), (4,0);
BEGIN;
SELECT * FROM t1 WHERE state = 0 LIMIT 2 LOCK IN SHARE MODE;
seat_id state 10 20
connection con1;
BEGIN;
SELECT * FROM t1 WHERE state = 0 LIMIT 2 LOCK IN SHARE MODE;
seat_id state 10 20
SELECT * FROM t1 WHERE state = 0 LIMIT 2 LOCK IN SHARE MODE SKIP LOCKED;
seat_id state 10 20
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE SKIP LOCKED;
seat_id state 30 40
SELECT * FROM t1 WHERE seat_id > 0 LIMIT 2 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE seat_id > 0 LIMIT 2 FOR UPDATE SKIP LOCKED;
seat_id state 30 40
COMMIT;
connection default;
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE;
seat_id state 10 20
connection con1;
SELECT * FROM t1 WHERE state = 0 LIMIT 2 LOCK IN SHARE MODE; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 LIMIT 2 LOCK IN SHARE MODE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 LIMIT 2 LOCK IN SHARE MODE SKIP LOCKED;
seat_id state 30 40
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 LIMIT 2 FOR UPDATE SKIP LOCKED;
seat_id state 30 40
SELECT * FROM t1 WHERE seat_id > 0 LIMIT 2 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE seat_id > 0 LIMIT 2 FOR UPDATE SKIP LOCKED;
seat_id state 30 40
COMMIT;
connection default;
COMMIT;
DROP TABLE t1;
# Case2: Test primary index & secondary index
CREATE TABLE t1(
seat_id INT,
row_id INT,
state INT,
PRIMARY KEY(seat_id),
KEY(row_id)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES(1,1,0), (2,1,0), (3,2,0), (4,2,0);
# Test secondary key
BEGIN;
SELECT * FROM t1 WHERE state = 0AND row_id = 1 LIMIT 1 FOR UPDATE NOWAIT;
seat_id row_id state 110
connection con1;
BEGIN;
SELECT * FROM t1 WHERE state = 0AND row_id = 1 LIMIT 1 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0AND row_id = 1 LIMIT 1 FOR UPDATE SKIP LOCKED;
seat_id row_id state 210
SELECT * FROM t1 WHERE state = 0AND row_id > 0 LIMIT 1 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0AND row_id > 0 LIMIT 1 FOR UPDATE SKIP LOCKED;
seat_id row_id state 210
SELECT * FROM t1 WHERE state = 0 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 FOR UPDATE SKIP LOCKED;
seat_id row_id state 210 320 420
COMMIT;
connection default;
COMMIT;
BEGIN;
SELECT * FROM t1 WHERE seat_id = 1 FOR UPDATE NOWAIT;
seat_id row_id state 110
connection con1;
BEGIN;
SELECT * FROM t1 WHERE state = 0AND row_id = 1 LIMIT 1 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0AND row_id = 1 LIMIT 1 FOR UPDATE SKIP LOCKED;
seat_id row_id state 210
SELECT * FROM t1 WHERE state = 0 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT * FROM t1 WHERE state = 0 FOR UPDATE SKIP LOCKED;
seat_id row_id state 210 320 420
COMMIT;
connection default;
COMMIT;
DROP TABLE t1;
# Case3: Test primary index & spatial index
CREATE TABLE t1(
seat_id INT,
pos POINT NOT NULL,
state INT,
PRIMARY KEY(seat_id),
SPATIAL KEY(pos)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES
(1,ST_PointFromText('POINT(1 0)'),0),
(2,ST_PointFromText('POINT(1 1)'),0),
(3,ST_PointFromText('POINT(2 0)'),0),
(4,ST_PointFromText('POINT(2 1)'),0),
(5,ST_PointFromText('POINT(3 0)'),0),
(6,ST_PointFromText('POINT(3 1)'),0);
BEGIN; SET @g = ST_GeomFromText('POLYGON((0 0,0 2,2 2,0 2,0 0))');
SELECT seat_id, state, ST_AsText(pos) FROM t1 FORCE INDEX (pos)
WHERE state = 0AND MBRWithin(pos, @g) FOR UPDATE NOWAIT;
seat_id state ST_AsText(pos) 20 POINT(11)
connection con1;
BEGIN; SET @g = ST_GeomFromText('POLYGON((0 0,0 4,4 4,0 4,0 0))');
SELECT seat_id, state, ST_AsText(pos) FROM t1 FORCE INDEX (pos)
WHERE state = 0AND MBRWithin(pos, @g) FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT seat_id, state, ST_AsText(pos) FROM t1
WHERE state = 0 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT seat_id, state, ST_AsText(pos) FROM t1
WHERE state = 0 FOR UPDATE SKIP LOCKED;
seat_id state ST_AsText(pos) 50 POINT(30) 60 POINT(31)
COMMIT;
connection default;
COMMIT;
connection con1; SET @g = ST_GeomFromText('POLYGON((0 0,0 3,3 3,0 3,0 0))');
SELECT seat_id, state, ST_AsText(pos) FROM t1 FORCE INDEX (pos)
WHERE state = 0AND MBRWithin(pos, @g) FOR UPDATE;
seat_id state ST_AsText(pos) 40 POINT(21) 20 POINT(11)
connection default;
BEGIN;
SELECT seat_id, state, ST_AsText(pos) FROM t1
WHERE seat_id = 4 FOR UPDATE NOWAIT;
seat_id state ST_AsText(pos) 40 POINT(21)
connection con1;
SELECT seat_id, state, ST_AsText(pos) FROM t1 FORCE INDEX (pos)
WHERE state = 0AND MBRWithin(pos, @g) FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT seat_id, state, ST_AsText(pos) FROM t1 FORCE INDEX (pos)
WHERE state = 0AND MBRWithin(pos, @g) FOR UPDATE SKIP LOCKED;
seat_id state ST_AsText(pos) 20 POINT(11)
SELECT seat_id, state, ST_AsText(pos) FROM t1
WHERE state = 0 FOR UPDATE NOWAIT; ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT seat_id, state, ST_AsText(pos) FROM t1
WHERE state = 0 FOR UPDATE SKIP LOCKED;
seat_id state ST_AsText(pos) 10 POINT(10) 20 POINT(11) 30 POINT(20) 50 POINT(30) 60 POINT(31)
connection default;
COMMIT;
DROP TABLE t1;
disconnect con1;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.