Ваша интуиция верна, запись в базу данных не очень хорошо масштабируется.Вы хотите избежать транзакции базы данных для каждого запроса страницы.
Как уже отмечалось, масштабирование действительно ваша проблема?Если это так и при условии наличия интернет-сайта (в отличие от внутреннего), пропустите свой собственный переход и собирайте данные о посещениях с помощью Google Analytics или чего-то подобного.Затем возьмите эти данные и обработайте их для генерации итогов по профилю.
Однако, если вы действительно хотите сделать это самостоятельно, рассмотрите вместо этого анализ лога.Если вы можете перечислить URL-адреса для каждого профиля, используйте эту информацию и журналы своего веб-сервера для генерации итоговых результатов.Ваши друзья, такие как Microsoft Log Parser , который может обрабатывать МНОГО различных форматов, или инструменты командной строки * nix, такие как sed и grep.
Если перечисление невозможно, измените код для регистрации необходимой информации и обработки этого файла журнала.
При наличии журналов генерируйте результаты, используя пакетный процесс, и вставляйте эти результаты в базу данных, используя LOAD DATA MySQL.
Последнее замечание по поводу вашего собственного подхода, который я рекомендовал - он будет масштабироваться намного лучше, если у вас кластеризованная среда, чем транзакция базы данных на запрос.