我有一个 php 脚本,它截断一个表并使用 .csv 文件中的数据重新构建它。该脚本有一个每 15 分钟运行一次的 cronjob。
我有另一个脚本,这个表的数据对它来说非常重要,这个脚本有点重(可能需要服务器 10-15 秒的计算。
有时会发生第一个脚本在处理第二个脚本时发生,并返回错误。我怎样才能在第一个脚本运行时“锁定”这个表? 谢谢
最佳答案
不要截断和重建。那是没有意义的。而是重建到一个新表中,然后将新表快速重命名为旧名称,然后丢弃现在的旧表:
CREATE TABLE _new LIKE old;
TRUNCATE _new;
LOAD DATA INFILE ... INTO _new ...;
RENAME TABLE old TO _old, _new TO old;
DROP TABLE _old;
您需要小心地测试它并确保它不会让您没有任何数据,但如果 TRUNCATE
方法未完成就退出,这里同样的风险也适用。
关于php - 锁定其他脚本查询的表,直到我的 php 脚本结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684531/