SET @@MAX_STATEMENT_TIME=2;
select @@max_statement_time;
@@max_statement_time 2.000000
SELECT SLEEP(1);
SLEEP(1) 0
SELECT SLEEP(3);
SLEEP(3) 1 SET @@MAX_STATEMENT_TIME=0;
SELECT SLEEP(1);
SLEEP(1) 0
SHOW STATUS LIKE "max_statement_time_exceeded";
Variable_name Value
Max_statement_time_exceeded 1
CREATE TABLE t1 (a INT, b VARCHAR(300)) engine=myisam;
INSERT INTO t1 VALUES (1, 'string');
SELECT 0; 0 0
# Test the MAX_STATEMENT_TIME option with SF (should have no effect).
CREATE PROCEDURE p1()
BEGIN
declare tmp int; SET @@MAX_STATEMENT_TIME=0.0001;
SELECT COUNT(*) INTO tmp FROM t1 WHERE b LIKE '%z%'; SET @@MAX_STATEMENT_TIME=0;
END|
CREATE PROCEDURE p2()
BEGIN SET @@MAX_STATEMENT_TIME=5;
END|
SELECT @@MAX_STATEMENT_TIME;
@@MAX_STATEMENT_TIME 0.000000
CALL p1();
CALL p2();
SELECT @@MAX_STATEMENT_TIME;
@@MAX_STATEMENT_TIME 5.000000 SET @@MAX_STATEMENT_TIME=0;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP TABLE t1;
# MAX_STATEMENT_TIME account resource
set statement sql_mode="" for
GRANT USAGE ON *.* TO user1@localhost WITH MAX_STATEMENT_TIME 1.005;
# con1
SELECT @@max_statement_time;
@@max_statement_time 1.005000
# restart and reconnect set @global.userstat=1;
SELECT @@global.max_statement_time,@@session.max_statement_time;
@@global.max_statement_time @@session.max_statement_time 0.0000001.005000
select sleep(100);
sleep(100) 1
SHOW STATUS LIKE "max_statement_time_exceeded";
Variable_name Value
Max_statement_time_exceeded 1
show grants for user1@localhost;
Grants for user1@localhost
GRANT USAGE ON *.* TO 'user1'@'localhost' WITH MAX_STATEMENT_TIME 1.005000 set @global.userstat=0;
DROP USER user1@localhost;
# MAX_STATEMENT_TIME status variables.
flush status; SET @@max_statement_time=0;
SELECT CONVERT(VARIABLE_VALUE, UNSIGNED) INTO @time_exceeded
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME = 'max_statement_time_exceeded'; SET @@max_statement_time=0.5;
SELECT SLEEP(2);
SLEEP(2) 1
SHOW STATUS LIKE '%timeout%';
Variable_name Value
Binlog_group_commit_trigger_timeout 0
Master_gtid_wait_timeouts 0
Ssl_default_timeout 0
Ssl_session_cache_timeouts 0 SET @@max_statement_time=0;
# Ensure that the counters for:
# - statements that exceeded their maximum execution time
# are incremented.
SELECT 1 AS STATUS FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME = 'max_statement_time_exceeded' AND CONVERT(VARIABLE_VALUE, UNSIGNED) > @time_exceeded;
STATUS 1
# Check that the appropriate error status is set.
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
START TRANSACTION;
SELECT * FROM t1 FOR UPDATE;
a 1 SET @@SESSION.max_statement_time = 0.5;
UPDATE t1 SET a = 2; ERROR70100: Query execution was interrupted (max_statement_time exceeded)
SHOW WARNINGS;
Level Code Message Error1969 Query execution was interrupted (max_statement_time exceeded)
ROLLBACK;
DROP TABLE t1;
# Test interaction with lock waits.
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1); SET @@SESSION.max_statement_time= 0.5;
LOCK TABLES t1 WRITE;
SELECT @@SESSION.max_statement_time;
@@SESSION.max_statement_time 0.500000
LOCK TABLES t1 READ; ERROR70100: Query execution was interrupted (max_statement_time exceeded)
UNLOCK TABLES;
BEGIN;
SELECT * FROM t1;
a 1
ALTER TABLE t1 ADD COLUMN b INT; ERROR70100: Query execution was interrupted (max_statement_time exceeded)
ROLLBACK;
SELECT GET_LOCK('lock', 1);
GET_LOCK('lock', 1) 1
SELECT GET_LOCK('lock', 1);
GET_LOCK('lock', 1)
NULL
SELECT RELEASE_LOCK('lock');
RELEASE_LOCK('lock') 1
DROP TABLE t1;
#
# MDEV-7011:MAX_STATEMENT_TIME has no effect in a procedure after
# a previous successful statement
#
create table t1 (i int);
insert into t1 values (1),(2),(3),(4);
insert into t1 select a.* from t1 a, t1 b, t1 c, t1 d, t1 e, t1 f, t1 g;
create procedure pr()
begin
select 1;
select sql_no_cache * from t1 where i > 5;
select sql_no_cache * from t1 where i > 5;
select sleep(2);
end | set max_statement_time = 0.001;
call pr(); 1 1 ERROR70100: Query execution was interrupted (max_statement_time exceeded) set max_statement_time = 0;
drop procedure pr;
create procedure pr()
begin
select sql_no_cache * from t1 where i > 5;
select sql_no_cache * from t1 where i > 5;
select sleep(2);
end | set max_statement_time = 0.001;
call pr(); ERROR70100: Query execution was interrupted (max_statement_time exceeded) set max_statement_time = 0;
drop procedure pr;
drop table t1; SET max_statement_time= 1;
CREATE TABLE t ENGINE=InnoDB SELECT * FROM seq_1_to_50000; ERROR70100: Query execution was interrupted (max_statement_time exceeded)
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 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.