mysqllong-running-processes

MySQL - can I limit the maximum time allowed for a query to run?


I'm looking for a way to limit the max running time of a query on mysql server. I figured this could be done through the my.cnf configuration file, but couldn't find anything relevant in the docs. Anyone knows if this could be done? thanks.


Solution

  • Update

    As of MySQL 5.7, you can include a MAX_EXECUTION_TIME optimizer hint in your SELECT queries to instruct the server to terminate it after the specified time.

    As far as I know, if you want to enforce a server-wide timeout, or if you care about queries besides SELECTs, the original answer is still your only option.

    Original answer

    There is no way to specify a maximum run time when sending a query to the server to run.

    However, it is not uncommon to have a cron job that runs every second on your database server, connecting and doing something like this:

    1. SHOW PROCESSLIST
    2. Find all connections with a query time larger than your maximum desired time
    3. Run KILL [process id] for each of those processes