На сервере LAMP с очень интенсивным трафиком я использую таблицу памяти для отслеживания нескольких элементов данных в качестве счетчиков. Это реализовано так:
$query = "INSERT INTO daily_info_mem SET di_num=1 ,di_type=9, di_date = current_date(), di_sid= $sid_int ,di_name='user_counter' ON DUPLICATE KEY UPDATE di_num=di_num+1";
Индекс устанавливает уникальный di_type и дату, поэтому, если счетчик существует для этой даты, то di_type увеличивается, если нет, создается строка для этой даты и типа данных со значением 0.
Таких запросов несколько для каждого просмотра страницы. Это означает несколько вызовов mysql.
Можно ли максимально оптимизировать это в один вызов mysql, который будет обновлять несколько произвольных счетчиков и при этом сохранять идею создания строки при необходимости или увеличения значения, если оно существует?