programing

MySQL "wait_timeout"이 긴 쿼리에 적용되지 않습니까?

yoursource 2022. 9. 23. 22:06
반응형

MySQL "wait_timeout"이 긴 쿼리에 적용되지 않습니까?

테스트하려고 합니다.wait_timeoutMySQL 설정은 무시되는 것 같습니다.

PHP 스크립트:

<?php
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$sql = mysqli_connect('localhost','root','root','mysql');
$query = "SHOW VARIABLES WHERE Variable_name='wait_timeout';";
$result = $sql->query($query) or die($query.'<br />'.$sql->error);
$row = $result->fetch_object();
echo "wait_timeout = " . $row->Value . "<br/>\n";

$time_start = microtime_float();
$query = "SELECT SLEEP(2) FROM mysql.user;";
$sql->query($query) or die($query.'<br />'.$sql->error);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Query completed in $time seconds<br/>\n";
echo "You got the page";

스크립트 출력:

wait_timeout = 2
Query completed in 8.0005459785461 seconds
You got the page

내 설정

mariadb-server-5.3.5
php5.3.6

일정 시간 후 MySQL이 쿼리를 강제로 타임아웃하려면 어떻게 해야 합니까?

둘다요.wait_timeout그리고.interactive_timeout는, 접속이 드롭 될 때까지의 비액티브하지 않은 시간입니다.따라서 연결이 폐기되기 전에 연결이 유휴 상태(쿼리를 실행하지 않음)여야 합니다.MySQLSLEEP()는 쿼리를 실행하고 있기 때문에 카운트되지 않습니다.

장시간 실행 중인 쿼리를 수동으로 종료해야 합니다(MySQL이 대신 실행하도록 설정할 수 없습니다).대본에 쓸 수 있어요.사용하다SHOW PROCESSLIST(또는 Innotop과 같은 외부 도구) 및KILL.

언급URL : https://stackoverflow.com/questions/10027453/mysql-wait-timeout-not-being-honored-for-long-query

반응형