Skip to content

Instantly share code, notes, and snippets.

@heathdutton
Last active June 29, 2023 17:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save heathdutton/aa5de938e632eedc7651d8a94d52841f to your computer and use it in GitHub Desktop.
Save heathdutton/aa5de938e632eedc7651d8a94d52841f to your computer and use it in GitHub Desktop.
Assassinates matching queries.
DELIMITER ;;
DROP PROCEDURE IF EXISTS `assasinate`;;
CREATE PROCEDURE `assasinate`(queryportion VARCHAR(255))
BEGIN
DECLARE sql_string MEDIUMTEXT;
DECLARE count MEDIUMINT;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET FOREIGN_KEY_CHECKS = 0;
SET @count = 0;
SET @sql_string := 'tmp';
WHILE @sql_string != "" DO
SET @sql_string := (
SELECT CONCAT('KILL ', ID, ';') -- assasinate
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE INFO LIKE CONCAT("%", queryportion, "%") COLLATE utf8_unicode_ci
AND INFO NOT LIKE "%assasinate%" COLLATE utf8_unicode_ci
ORDER BY TIME DESC
LIMIT 1
);
IF @sql_string != "" THEN
PREPARE st FROM @sql_string;
EXECUTE st;
SET @count = @count + 1;
END IF;
END WHILE;
SELECT CONCAT("Killed ", @count, " matching queries.") as "result";
END;;
DELIMITER ;
CALL assasinate("part_of_query_you_wish_to_kill");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment