Ну вот видите, не такой я злой и страшный, а иногда даже могу что дельное подсказать. И даже вы оказались на моей темной стороне. :ugeek:
Дальше если развивать тему. Почему файловый кеш для атомарных контейнеров медленне, чем запросы в грамотно настроенную базу.
1. Mysql - это хранилище с поддержкой быстрой выборки по ключам. Уже на 3-4-5к файлов в папке будут тормоза с поиском файла, и механизм индексирования к файловой системе не особо применим.
2. Правильно сконфигурированный сервер базы, позволяет держать все таблицы в памяти, обеспечивая все таки более быстрый доступ к данным, чем даже обращение к файлу на SSD диске.
3. Очередь обращения к данным в памяти практически не влияет на скорость доступа, а вот очередь обращения к файлам опять же на том же ssd, никуда не денешь.
Если говорить о реализации тяжелого проекта, в котором надо реализовать подобную задачу, и говорить о жестокой реализации. То нужно денормализовать структуру. Создать отдельный справочник (category_id, data_subcategory) обновляемый при любых изменениях в категориях. И использовать его, вместо постоянных запросов с JOIN. Равно как и для getTotalProduct, можно сделать RT-индекс и подвесить все в тот же сфинкс.
Вы забыли три страшных слова - шардинг, партицирование и репликация. Но боюсь, что ответ все равно будет из серии "а в моей песочнице, все равно ведерко синее".