大数据、高并发下查询不到数据(实际数据存在)
请求QPH在50万左右这个量级
表单数据在5000万到1亿这个数据量
首先执行的是firstOrCreate()方法🙅(由于要分表,现在没法用,只能先查询,然后没有记录再去创建新记录)
然后捕获了唯一索引的异常,捕获后再去查询,但是查不到数据,这种情况下该怎么解决?
已经是在队列里了
求大佬支招~
try {
$watchLogModel = WatchLogModel::suffix($suffix)
->where('transId', $transId)
->first();
if (!$watchLogModel) {
$watchLogModel = new WatchLogModel();
$watchLogModel->setTable('watch_log_' . $suffix);
$watchLogModel->transId = $transId;
$watchLogModel->save();
} else {
$watchLogModel->setTable('watch_log_' . $suffix);
}
} catch (QueryException $queryException) {
if ($queryException->getCode() == '23000') {
//捕获唯一索引异常,然后去查记录
$watchLogModel = WatchLogModel::suffix($suffix)
->where('transId', $transId)
->first();
//这里的查询结果有时候是null
} else {
throw $queryException;
}
}
推荐文章: