Обычно разрешения и настройки основаны на дереве. Ваши настройки для сеанса будут указывать на настройки по умолчанию на один уровень выше ваших. Ваши настройки сеанса будут уже созданы и просто ссылаются на настройки по умолчанию при первом подключении.
Когда вы изменяете параметр, например, устанавливаете значение storage_engine, вы создаете новую копию всех параметров и меняете одно значение (как в Apache) или добавляете другой слой в дерево, которое он должен проверить при разрешении значений. Я на самом деле не уверен, какой MySQL использует, но в любом случае, если вам не нужен этот параметр, вы не должны устанавливать его в каждом цикле.
Если вам это нужно относительно часто, это может стоить снижения производительности. Аналогичная проблема возникает в PHP. Вы не хотите изменять переменные, такие как PHP include-путь, в вашем PHP-коде, который добавлял массу накладных расходов.
Jacob