Почему тормозит код записи в MySQL после разбивки его на функции?
Если вы делаете коннект к БД в каждой функции, то результат логичен. Коннект занимает в лучшем случае 0.2-0.5 секунды, в худшем - несколько секунд.
Используйте внедрение зависимости, подключайтесь к базе один раз с начале скрипта и передавайте подключение в экземпляр класса при его создании. Или по старинке используйте синглтон.
Во-первых, такой подход называется не функциональным, с процедурным. Функциональное программирование - это совсем другое.
Во-вторых, сама по себе разбивка кода на функции ни к какому замедлению не приводит. 
Проблема не в том, что много функций, а в том коде, который в них написан.

В целом, цифры какие-то дикие. Что 8 секунд, что 16, что 3. Для записи одного "продукта" нужно максимум 0.1 секунды, если всё очень сильно тормозит