我刚刚查看了 MySQL 文档的https://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html
我打算使用 INSERT DELAYED,但我看到这已被弃用。
我仍然需要这个功能来与一些处理一些非常大的数据传输的 PHP 代码兼容。我很高兴更新我的 PHP,但我现在不知道如何实现相同的功能。
既然传统的 INSERT DELAYED 已被弃用,我们将如何获得与传统 INSERT DELAYED 相同的结果?
我刚刚查看了 MySQL 文档的https://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html
我打算使用 INSERT DELAYED,但我看到这已被弃用。
我仍然需要这个功能来与一些处理一些非常大的数据传输的 PHP 代码兼容。我很高兴更新我的 PHP,但我现在不知道如何实现相同的功能。
既然传统的 INSERT DELAYED 已被弃用,我们将如何获得与传统 INSERT DELAYED 相同的结果?
根据MySQL 5.5。文档
您可以降级到 MySQL 5.5(当然,我是在开玩笑)。我有三个建议。请调查他们。
建议 #1
您可以设置 MySQL 复制并执行以下操作
建议 #2
调整 InnoDB 环境以处理更快的写入。请参阅我 4.5 年前的帖子如何在 InnoDB 引擎中使用插入延迟并为插入语句使用更少的连接?并且从 infile 加载的 Mysql 卡在硬盘上等待
建议#3
自定义批量插入以使用像 mysqldump 一样一次加载固定数量的行的扩展插入。
我认为您的问题是,您需要将工作推迟到给定时间段之后。
在这些情况下,我会使用队列并将队列作业推迟到所需的时间。
例如https://laravel.com/docs/5.3/queues#delayed-dispatching
虽然从文档中“当表未被任何其他线程使用时排队插入”无法通过此方法实现,但如果需要,您将需要在您的工作中实现此功能。