php - 每 5 分钟循环更新数据库表

标签 php mysql performance mysqli cyclic

我必须根据从其他表的数据中进行的选择,使用复杂且昂贵的查询来填充和更新我的 MySql 数据库表之一。当我对其进行查询时,该表不需要始终完全更新,但我希望每 5 分钟进行一次循环更新。

这个自动更新应该是无限的,我需要确保它永远不会停止。

经过一些研究,我找到了一些解决方案,但我不知道哪个对安全性和性能更好。

其中一个可能是我的目标:

  1. 不要每次都创建表并从 php 进行复杂的查询以获得所需的结果
  2. 创建一个循环重复并更新表数据库的 php 脚本,可能使用 Cron Job。
  3. 使用 sql 事件更新表

我认为第一个解决方案可能会很昂贵,因为查询很复杂并且每秒可能有很多请求,但结果总是会更新。我没有关于 Cron Job 的经验,所以我不知道这是否是个好主意。对于第三种解决方案,我仍然没有运行事件的数据库权限,但我想知道它是否是一个有效的解决方案。

欢迎所有其他解决方案,谢谢。

最佳答案

不要使用 cron。想一想如果一个实例超过 5 分钟而下一个实例又启动了会发生什么。最终,您将有数百个副本陷入相互绊倒的泥潭。

取而代之的是在一个循环中执行更新的单个作业。 (好吧,你可以有一个 cron 作业来执行“保持事件”任务,如果它死了就重新启动查询。)

这份工作会

CREATE TABLE new ...
INSERT INTO new  SELECT complex-stuff...
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
loop.

关于php - 每 5 分钟循环更新数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33110442/

相关文章:

php - Mysql 排序规则编码

php - 如何将值从 iframe src url 传递给父级

mysql - 某些表的 SQL 访问被拒绝,但其他表则不然

java - 如何将域字段设置为数字列表

php - 在 MySQL 中存储日期

android - Libgdx:屏幕管理器

linux - centos cpu使用率很高,但是找不到进程

php - openbase_dir 和子目录

php - WHERE OR 子句无法正常工作

sql-server - SQL Server - 表查找的查询性能