копирование больших объемов данный в MySQL как?

Статус
В этой теме нельзя размещать новые ответы.

Juri

Мой дом здесь!
Заблокирован
Регистрация
5 Окт 2007
Сообщения
1.064
Реакции
200
  • Автор темы
  • Заблокирован
  • #1
собственно такой вопрос.
время от времени, довольно часто приходиться переносить большие объемы данных в пределах одной таблицы, из поля в поле. например из url в url_tmp и наоборот. этот процес создает не плоху нагрузку на сервак. сейчас это все крутиться у мнея дома на локальном серваке, но учитывая его можношсть и то как он грузиться во время процесса, я не могу это все выложить в инет.

кто может подсказать как это сделать с наименьшими затратами ресурсов.

искал в мануале ничего не нашол, может криво искал заранее извеняюсь.
 
Что-то типа INSERT INTO url_temp VALUES(SELECT * FROM url);
 
  • Заблокирован
  • #4
Код:
UPDATE tab SET url_tmp = url
что бы снизить нагрузку и ускорить процесс, добавь индексы для url и url_tmp

зы.. а лучше даже так (если таблица большая, и кто то может туда всунуться с записью в момент обновления:(
Код:
LOCK TABLES tab WRITE;
UPDATE tab SET url_tmp = url;
UNLOCK TABLES;
 
ИМХО неграмотно спроектирована логика, раз необходимо переносить из одного столбца в другой.
А раз уж так получилось то можежет проще в скрипте?
наверняка в таблице есть flag по кторому вы и делали
UPDATE SET .... WHERE flag
так может проще $url = ($row['flag']=='значение') ? $row['url'] : $row['url_tmp'];
а уж если и это не подходит то сделайте общий индекс на эти 2 поля и потом по крону запускайте ваш update в то время когда малоактивен сервер.

Удачи
 
собственно такой вопрос.
время от времени, довольно часто приходиться переносить большие объемы данных в пределах одной таблицы, из поля в поле. например из url в url_tmp и наоборот. этот процес создает не плоху нагрузку на сервак. сейчас это все крутиться у мнея дома на локальном серваке, но учитывая его можношсть и то как он грузиться во время процесса, я не могу это все выложить в инет.

кто может подсказать как это сделать с наименьшими затратами ресурсов.

искал в мануале ничего не нашол, может криво искал заранее извеняюсь.

не совсем понятен процесс переноса, как ты его описал
попробуй поэксперементировать с временными таблицами

это только пример - может сможешь его приспособить под свои нужды

Код:
--Создание копии таблицы  во временной таблице
CREATE TEMPORARY TABLE bad_temp AS (SELECT url, url_tmp FROM contents_site);
 
самое простое через update и временные таблицы. Как правило перенос в пределах одной таблицы - действие разовое и нагрузки можно себе позволить
 
  • Заблокирован
  • #8
да зачем дополнительно создавать временную таблицу, если она и так создается субд при простом update однго столбца из другого?.. к чему вообще этот огород, если есть абсолютно тривиальный способ сделать копию?..
 
Если это нужно делать единоразово, можешь написать прогу на delphi/builder для работой с бд, считать данные с БД, потом добавить их в нужный столбец. Так как это будет делаться удаленно, нагрузка на сервер будет меньшей, я думаю.
 
Если это нужно делать единоразово, можешь написать прогу на delphi/builder для работой с бд, считать данные с БД, потом добавить их в нужный столбец. Так как это будет делаться удаленно, нагрузка на сервер будет меньшей, я думаю.

Жесть! :tcl:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху