如何使用cronjobs更新mysql数据库中的大型数据库

oknwwptz  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(208)

如果有人帮助我解决这个问题,我将非常感谢。
细节:我有一个mysql表,其中110000+条记录以唯一的应用程序(列)号存储。现在有一个细节api,它在uri参数中一次只获取一个应用程序号,并返回该应用程序号的细节,现在大约需要1分钟才能响应。
现在,我需要使用cron作业调度来更新记录(多列),以便始终更新数据库中的记录。它将逐步更新。
流程:从数据库中获取应用程序号->调用细节api->更新数据库中的记录。
问题:数据库中有大量记录,因此我们不能为其中的所有应用程序号调用api。
我使用laravel7和guzzlehttpclient7.2httpclient进行api调用。
欢迎任何建议!
更新:(未测试)我正在考虑这样做,并同意@bhucho评论每15分钟给cron打一次电话
我们在表中为上次更新的\u id default 1再创建一列,我们将编写一个查询来获取应用程序编号,并使用laravel take方法从数据库查询中获取一个slab中的100或500条记录

$latestIdInColumn = myTableClassRef::max(last_updated_id);

$applications = myTableClassRef::select('application_number)->where('id', '>', $latestIdInColumn)
->take(100)
->get()->toArray();

这里我们为每个应用程序编号调用detailapi和update,当最后一次应用程序更新完成时,我们将把该id存储在最后一次更新的id中。
当再次cron调用时,我们有最后一个更新的id,所以我们将在下一个id'>'$latestidincolumn查询中应用相同的过滤器。现在我们将获得下一个100/500记录,其中id大于$latestidincolumn。

if ( $applications  )
{
  For all other available id
} else {
  when record not found.
  Here we will reset the last_updated_id = 1
}

现在函数将从id 1获取。
它还没有测试,我只是计划这样做,我很高兴有这个反馈。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题