- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Друзья, нужна помощь.
я профан в mySql и че-то у меня сайт валит на хостинге mysql. создавая дикую нагрузку. программер который изначально мне это писал давно пропал без вести.
после анализа логов нашел у него в скрипте такие строки:
или такие:
и вот я хоть и чайник, а понимаю что тут явно избыток обращений к БД. но как я ни пытался сам тут поправить к 1 запрос, оно что- то не получается.
подскажите как то это можно в 1 запрос записать, а то в коде полно таких мест, судя по логам эти места и создают нагрузку.
спасибо. извините если вопрос был уж сильно глупый.
У вас сервер? Виратуальный хостинг? VPS? Что у вас?
---------- Добавлено 30.07.2013 в 16:55 ----------
На каком движке сайт?
Какие характеристики сервера?
м... а что тут оптимизировать?
Разве что анализ рантайм кода, на необходимость таких апдейтов, делитов и инсертов.
LEOnidUKG, хостинг виртуальный.
движка как такового нет, сайт писался с нуля в 2004-2005 году.
с тех пор еще видимо и база загадилась чем ни поподя(много лишних записей, которые не удалились ни разу), сижу руками чищу(старые и несуществующие записи убиваю ), вроде за последний час нагрузка стала поменьше.)
Chukcha, во втором случае мне кажется точно можно вместо delete и потом инсерта сделать update. или нет? или это роли не сыграет?
их там таких обращений тьма и таблица сама по себе большая.
а в первом случае если записать все в 1 запрос, а потом уже сделать mysql_unbuffered_query ($query); легче не станет.
Согласен, во втором случае, возможно.
Согласен, во втором случае, возможно.
не поможете написать?), а то я совсем с sql не дружу. полдня сижу читаю документацию а рабочий запрос так и не выходит...(
UPDATE `table1`
SET `date`='. ,$dt_f.'
`text`='.$txt.'
WHERE `cod` ='.$data->city->id;
но тут возможны варианты
Возможно нужны еще дефолтные значения.
спасибо. попробую сейчас.
DELETE оператор по-моему позволяет делать INNER JOIN, удаляя таким образом сразу из нескольки таблиц одновременно.
Но если у вас InnoDB я бы транзакции сделал ...
И DELETE + INSERT заменить на UPDATE, а то это по-моему совсем трэш :) Разве что у вас там может до удаления быть несколько записей с city_id, их нужно удалить все и вставить одну новую.
$query = 'UPDATE `table1` SET `cod`='.$data->city->id.' WHERE `cod` ='.$id;
$result = mysql_unbuffered_query ($query);
$query = 'UPDATE `table2` SET `id`='.$data->city->id.' WHERE `id` ='.$id;
$result = mysql_unbuffered_query ($query);
$query = 'DELETE FROM `table3` WHERE `city_id` = '.$id;
$result = mysql_unbuffered_query ($query);
$query = 'DELETE FROM `table4` WHERE `city_id` = '.$id;
$result = mysql_unbuffered_query ($query);
Здесь ничего тяжелого нету, обычные запросы которые могут и без индексов выполнятся. Конечно, если там не многомиллионная таблица и запросы не запускаются в цикле по 10К итерации.
и вот я хоть и чайник, а понимаю что тут явно избыток обращений к БД.
4-5 запросов?
их там таких обращений тьма и таблица сама по себе большая.
Структуру покажите, может индексы помогут.
---------- Добавлено 30.07.2013 в 18:06 ----------
// удаляем старое....
$query = 'DELETE FROM `table1` WHERE `city_id` = '.$data->city->id;
$result = mysql_unbuffered_query ($query);
// добавляем новое....
$query = "INSERT INTO `table1` (`city_id`, `date`, `text`)
VALUES (
'".$data->city->id."',
'".$dt_f."',
'".$txt."'
)
";
$result = mysql_unbuffered_query ($query);
ON DUPLICATE KEY UPDATE поможет если city_id UNIQUE или PRIMERY KEY