我在MySQL中运行了一个长时间的进程,已经运行了一周。有另一个连接到复制主机,但我已停止从库处理,因此实际上没有其他操作。
如何确定这个进程是否仍在工作?我知道它需要很长时间,这就是为什么我将其放在自己的数据库实例上的原因,但这比我预期的时间还要长。显然,如果它仍在工作,我不想杀死它。如果它已经僵死,那么我不知道该如何完成它应该完成的工作。
它处于“发送数据”状态。该表是InnoDB表,但查询未使用任何FK引用。自查询开始以来,InnoDB状态未显示任何错误或锁定。
欢迎提出任何想法。
我在MySQL中运行了一个长时间的进程,已经运行了一周。有另一个连接到复制主机,但我已停止从库处理,因此实际上没有其他操作。
如何确定这个进程是否仍在工作?我知道它需要很长时间,这就是为什么我将其放在自己的数据库实例上的原因,但这比我预期的时间还要长。显然,如果它仍在工作,我不想杀死它。如果它已经僵死,那么我不知道该如何完成它应该完成的工作。
它处于“发送数据”状态。该表是InnoDB表,但查询未使用任何FK引用。自查询开始以来,InnoDB状态未显示任何错误或锁定。
欢迎提出任何想法。
尝试使用“SHOW PROCESSLIST”查看正在运行的内容。
当然,如果您杀死它,它可能会花费同样多的时间来回滚。
根据你的说法,它并没有卡住。但是,绝对不能保证它会在合理的时间内完成。添加索引几乎肯定会有所帮助,根据查询类型重构为一系列使用临时表的查询可能会极大地提高性能。我不建议等待它也许完成。
针对这么大的数据库,为了获得更好的性能,您可以考虑使用文档型数据库,例如mongoDB。它会占用更多的硬盘空间来存储数据库,但根据您当前的架构,您可能会获得更好的性能。