检查长 运行 查询的状态

Check status of the long running query

我有一个数据库查询,它在某些给定条件下从数据库中删除。查询由一个端点发起,如果查询花费很长时间(确实如此),该端点就会超时。调用此端点的服务需要在此操作成功后执行一些其他任务。所以我们需要知道这个查询何时完成。查询是:

DELETE FROM foo WHERE creation_time BETWEEN ? AND ? AND bar_id = ?

我如何知道查询何时完成?我正在使用 jdbctemplate 来查询数据库。 我想到了一个选项,但现在确定 between 查询在内部是如何工作的。

我想创建一个状态端点来检查查询是否仍然 运行?端点将检查 foo 中是否有任何行 creation_time = FROMbar_id = id。 但我不知道 mysql 如何在内部处理 BETWEEN 查询。如果它从 FROMTO 或两者之间的任何内容开始删除。

简短的问题:如何检查我的查询是否仍在 运行 或已完成 jdbctemplate?

您可以执行SHOW FULL PROCESSLIST;命令。有关命令的详细说明,请参阅 MySQL docs

这将显示所有 运行 个线程,以及当前正在执行的查询和执行时间 运行。

然后解析输出以查看您的查询是否仍然是 运行。

希望对您有所帮助。