gpt4 book ai didi

mysql - 我如何知道哪个 MySQL 进程创建了临时文件以及临时文件是否仍在使用中?

转载 作者:行者123 更新时间:2023-11-29 00:30:49 25 4
gpt4 key购买 nike

我们为 MySQL(在 Linux 上)编写脚本命令(通常是 PERL),有时会创建被遗忘的临时文件。我正在尝试编写一个可以删除已孤立文件的监视脚本。我不仅需要知道该文件不再使用(我可以通过操作系统调用来做到这一点),而且还需要知道 MySQL 已经完全完成了它。

有人能告诉我如何通过 PERL 或什至只是一个 SQL 命令(我可以弄清楚脚本方面)询问 MySQL 以确定 MySQL 是否完成了特定的临时表文件或当前正在使用它的进程。谢谢。

最佳答案

发出“显示进程列表;”并关注 id、db、command、state、info 列

让我们调用 perl 脚本 PERL 和清理 CLEANUP 的例程(通过 cron 或其他方式)。

如果您在 perl 脚本中将“select connection_id()”的输出保存到一个变量,例如 id #59,并将其插入到一个带有时间戳的信息表中,即(id 和时间戳),然后通过你的 PERL 代码时不时地写同样的东西。

CLEANUP 可以进行日期计算,以了解外面的某些东西正在积极运行。信息表会告诉它是的,如果时间戳是最近的,您的 PERL 例程之一是事件的

当 PERL 完成后,它可以删除该信息表中具有其连接 ID 的行(作为 1 个想法)。

这样 CLEANUP 就可以知道是否有任何类似 PERL 的东西处于事件状态并采取必要的步骤进行清理

您可以通过拥有另一个 CONTROL-TABLE 来扩充它,PERL 会尝试在该表上获取 WRITE 锁(不一定会写入它,而只是一次尝试)。并且 CLEANUP 可以在尝试清理之前尝试获取 CONTROL-TABLE 上的写锁。当 PERL 完成后,它释放写锁。如果它崩溃,锁就会消失。因此,CLEANUP 并不完全依赖于来自 PERL 的进程 ID 的信息表,而是像一个信号量。 CLEANUP 将锁定该表,进行清理并阻止其他 PERLS 启动。您可以使用 CLEANUP 的独占表锁和 PERL 的行级锁的变体,以便多个 PERLS 可以同时运行

关于mysql - 我如何知道哪个 MySQL 进程创建了临时文件以及临时文件是否仍在使用中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com