mysql_query() を使用して php で長時間実行される mysql クエリを実行すると (私はそれを使用することになっていないことを知っています)、php プロセスが強制終了され、クエリが mysql サーバーで実行され続けることに気付きました。これは永続的な接続ではありません。接続は次のように行われます。
$db = mysql_connect($host, $login, $pass, false);
$sql = 'SELECT COUNT(*) FROM `huge_table`';
$result = mysql_query($sql, $db);
たとえば、10 億行のテーブルがあり、php プロセスが何らかの理由でこれを行うとします。
SELECT COUNT(*) FROM `huge_table`
そして、タイムアウトになるため (たとえば、request_terminate_timeout=5 で php-fpm を実行しているため)、5 秒後にプロセスを強制終了して、問題が発生しないようにします。
プロセスが強制終了されても、wait_timeout の後でもクエリは mysql で実行されます。
とにかく、何らかの理由でphpプロセスが終了した場合、それが作成した実行中のクエリも強制終了することを確認する方法はありますか?
私はmysql 5.5.38であるtokudb 5.5.38-tokudb-7.1.7-eを使用しています