Задать вопрос

PHP перезапись простых данных в базе. С позиции нагрузки на сервер, какой вариант лучше?

Доброго времени суток!
Хочу понять как лучше сохранять данные в базе так чтобы меньше нагружать сервер и базу.
Нужно перезаписать простые строковые данные введенные в поля формы.

Объясните, пожалуйста, какой метод лучше использовать - с if или перезаписывать все данные без разбору.

if (!empty($lastName) && $lastName !== $userData->last_name ) {
            $userData->last_name = $lastName;
        }
        if (!empty($name) && $name !== $userData->name ) {
            $userData->name = $name;
        }


С одной стороны перезаписывать данные без изменений нет смысла, с другой множество проверок так же понемногу да и съедают ресурсы сервера.
  • Вопрос задан
  • 124 просмотра
Подписаться 2 Простой 7 комментариев
Решения вопроса 1
@NinjaNickName
Web разработчик
Программисты тратят огромное количество времени, размышляя и беспокоясь о некритичных местах кода, и пытаются оптимизировать их, что исключительно негативно сказывается на последующей отладке и поддержке. Мы должны вообще забыть об оптимизации в, скажем, 97% случаев. Поспешная оптимизация является корнем всех зол. И, напротив, мы должны уделить все внимание оставшимся 3%.


— Дональд Кнут optimization.guide

По существу вопроса, обновлять нужно только те данные, что изменились. Специалистом по hightload я себя не считаю, более опытные коллеги поправят, если ошибаюсь, но по-моему это очевидно, что операции по вставке данных в базу при любом раскладе будут дороже, чем if, незачем лишний раз байты-килобайты туда-сюда тащить, тем более, если речь о hightload.

UPDATE
Наткнулся на занятный бенчмарк, решил обновить пост:

$a = [];
for ($i = 0; $i < 9000000; $i++) {
    if (!empty($a)) {}
}
// Completed in 0.221 seconds on php 7.3


$a = [];
for ($i = 0; $i < 9000000; $i++) {
    if ($a) {}
}
// Completed in 0.166 seconds on php 7.3

Источник и подробности
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Оптимизация работает на другом уровне - при падении производительности или ее приближении ищут узкое место и исправляют, перед этим собирают статистику логов, частоты запросов, скорости запросов. Логично, что нет смысла перезаписывать данные, которые не изменились в строке, но если кроме чутья у вас нет оснований это менять на другой подход, то не надо.
Upd. Если уже углубляться, то с точки зрения базы надо читать книги по ее оптимизации (нп. "MySQL по максимуму"), а по php - книга php internals, у самой в планах ее прочесть для просветления), сайты и книги по хайлоаду
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы