オンラインユーザーを記録するinnoDBテーブルがあります。ユーザーがページを更新するたびに更新され、ユーザーが現在アクセスしているページとサイトへの最終アクセス日を追跡します。次に、15分ごとに実行して古いレコードを削除するcronがあります。
ロックを取得しようとしたときに「デッドロック」が見つかりました。昨夜約5分間トランザクションを再起動してみてください。このテーブルに対してINSERTを実行しているときのようです。誰かがこのエラーを回避する方法を提案できますか?
===編集===
実行中のクエリは次のとおりです。
サイトへの最初の訪問:
INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
ページを更新するたびに:
UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888
15分ごとのCron:
DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND
次に、いくつかの統計を記録するためにいくつかのカウントを実行します(つまり、オンラインのメンバー、オンラインの訪問者)。