Saya memiliki tabel innoDB yang mencatat pengguna online. Itu diperbarui pada setiap halaman refresh oleh pengguna untuk melacak halaman mana mereka berada dan tanggal akses terakhir mereka ke situs. Saya kemudian memiliki cron yang berjalan setiap 15 menit untuk HAPUS catatan lama.
Saya mendapat 'Deadlock ditemukan ketika mencoba untuk mendapatkan kunci; coba mulai kembali transaksi 'selama sekitar 5 menit semalam dan tampaknya ketika menjalankan INSERT ke dalam tabel ini. Adakah yang bisa menyarankan cara menghindari kesalahan ini?
=== EDIT ===
Berikut ini pertanyaan yang sedang berjalan:
Kunjungan Pertama ke situs:
INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
Di setiap halaman segarkan:
UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888
Cron setiap 15 menit:
DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND
Ini kemudian menghitung jumlah untuk mencatat beberapa statistik (yaitu: anggota online, pengunjung online).