我的应用程序中有这个特定的代码:
if ($request->filled('jawaban')) {
$jawaban = JawabanUserM::where('user_id', $user->id)
->where('paket_id', $kuis['paket_id'])->firstOrNew(['soal_id'=>$kuis['curr_id']]);
if($jawaban->jawaban_id != $request->jawaban) {
$jawaban->user_id = $user->id;
$jawaban->paket_id = $kuis['paket_id'];
$jawaban->soal_id = $kuis['curr_id'];
$jawaban->jawaban_id = $request->jawaban;
$jawaban->save();
}
}
它基本上将用户的答案插入到表JawabanUserM
中我在部署时运行此应用程序。 使用laravel 5.5,mysql 5.5.58,nginx 1.12.2,php-fpm 7.0.27。
一次只有800-1000 ++平均用户。使用InnoDB引擎。
当我检查周围时,我发现了一些重复的记录。我检查使用这个SQL:
SELECT
id, soal_id, user_id, jawaban_id, paket_id, COUNT(*)
FROM
jawabanuserm
GROUP BY
soal_id, user_id, jawaban_id, paket_id
HAVING
COUNT(*) > 1
ORDER BY COUNT(*) DESC
结果是:
id | soal_id | user_id | jawaban_id | paket_id | COUNT(*)
4702 | 117 | 100 | 401 | 6 | 6
4694 | 111 | 100 | 401 | 6 | 5
15080 | 110 | 1300 | 1077 | 7 | 5
8097 | 186 | 435 | 686 | 6 | 4
4679 | 97 | 100 | 401 | 6 | 4
....
有什么建议可以解决这个问题以及为什么会这样?
首先,我坚信这是由于流程之间的沟通不良造成的。我已向我的同事询问他们建议使用程序,但这会影响我认为的表现。