Люди же делают, это не rocket science и даже не big data (у big data вообще нет четких критериев, когда big, а когда нет)
Mysql просядет конечно, если хранить все в одной таблице. Нужно партиционировать.
Временные данные (для незарегистрированных пользователей) не смертельно хранить в памяти (Redis) — быстрее будет.
Насчет нагрузки на контроллеры ничего не могу сказать — с Yii не работаю. Но не думаю, что это такая уж большая проблема — при отображении товара конкретному пользователю проверять сессию и писать данные о просмотре в базу.
В целом не вижу ничего сложного.