Como evitar o bloqueio do mysql 'encontrado ao tentar obter o bloqueio; tente reiniciar a transação '

Eu tenho uma tabela innoDB que registra usuários online. Ele é atualizado a cada atualização de página por um usuário para acompanhar quais páginas estão e sua última data de acesso ao site. Em seguida, tenho um cron que é executado a cada 15 minutos para excluir registros antigos.

Eu encontrei um 'Deadlock encontrado ao tentar trancar; tente reiniciar a transação 'por cerca de 5 minutos na noite passada e parece estar executando os INSERTs nesta tabela. Alguém pode sugerir como evitar esse erro?

=== EDIT ===

Aqui estão as consultas que estão sendo executadas:

Primeira visita ao site:

INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3

Em cada atualização de página:

UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888

Cron a cada 15 minutos:

DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND

Em seguida, faz algumas contagens para registrar algumas estatísticas (por exemplo: membros online, visitantes online).

questionAnswers(7)

yourAnswerToTheQuestion