Как реализуется хранение настроек пользователя в базе?
Вариант с отдельной таблицей хорошо подходит, если много полей настроек. Но почему json? Храните отдельные поля, так будет легче осуществлять фильтрацию и редактирование отдельных полей.
Да вообще в любой форме храните, хоть в поле text и потом парсить строку)))
Cуть в том, что настройки юзера - это те данные, к которым НИКОГДА не будет обращения 1000раз в секунду! 
Одно обращение в момент подключения юзера к системе - ВСЁ, далее таблица простаивает. Не будут же все ваши 100 млн  юзеров входить в систему одномоментно)))
Не забивайтесь так, а то уже попахивает преждевременной оптимизацией."Программисты тратят огромное количество времени, размышляя и беспокоясь о некритичных местах кода, и пытаются оптимизировать их, что исключительно негативно сказывается на последующей отладке и поддержке. Мы должны вообще забыть об оптимизации в, скажем, 97% случаев. Поспешная оптимизация является корнем всех зол. И, напротив, мы должны уделить все внимание оставшимся 3%."— Дональд Кнут
Вот держи пример. set_id - это предопределенный набор настроек, который ты даешь редактировать юзерам.