我有一个PHP脚本(使用Eloquent),每天自动运行,并在桌面上进行数十万次插入和删除。
为了提高脚本的性能,以及防止在使用同一数据库的其他应用程序中出现不一致,我使用了这样的事务:
DB::transaction(function() use ($flights) {
Flights::where('manual', false)->delete();
foreach ($flights as $id => $value) {
$count = Flights::where('id', $id)->count();
if ($count !== 0) {
Flights::create([
'id' => $id,
'value' => $value,
'manual' => false
]);
}
}
}
但是,在数据库上执行选择查询时,来自其他来源的任何操作(例如应用程序的Web应用程序部分)都会有超时。
如何防止这种情况发生?