ФорумПрограммированиеPHP для идиотов → Помогите оптимизировать скрипт

Помогите оптимизировать скрипт

  • Alexx

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 20 октября 2012 г. 11:35

    Здравствуйте.
    Заказал на фрилансе заливку контента из файла CSV в таблицы БД. Мне сделали файл импорта, но он в процессе очень сильно давит на сервак.
    Дайте пожалуйста совет, как по вашему мнению можно его видоизменить, дабы снизить нагрузку.

    Заранее спасибо.
    1. import.zip (19)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 октября 2012 г. 11:58, спустя 23 минуты 39 секунд

    ебанутая все таки эта жумла
    Сапожник без сапог
  • indeego

    Сообщения: 125 Репутация: N Группа: Кто попало

    Spritz 20 октября 2012 г. 12:18, спустя 19 минут 22 секунды

    Хули тут оптимизировать, там на каждую итерацию один инсерт. Если товаров овер9000 будет овер900 инсертов, а если таблица пузатая, и хуй пойми как стоят индексы - то инсерты быстрыми быть в принципе не могут. Это закон Джунглей.

    Какой тип у таблицы? MyISAM or InnoDB?
  • Magnum79

    Сообщения: 25 Репутация: N Группа: Кто попало

    Spritz 20 октября 2012 г. 13:08, спустя 50 минут 26 секунд

    Таблицы MyISAM. Про ебанутость джумлы наслышан, но проект не мой. Нужно просто доработать.
    Эта проблема со скриптом импорта осталась пока самой большой и нерешаемой.
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 20 октября 2012 г. 13:38, спустя 29 минут 59 секунд

    Хули тут оптимизировать, там на каждую итерацию один инсерт

    Разве? Скрипт не смотрел, но можно же, например, на 1000 записей делать 1 инсерт (bulk insert): insert into table_name (id, val) values(1,1),(1,2),(1,3),…(1,n)
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 октября 2012 г. 14:53, спустя 1 час 15 минут

    а что, этот CSV надо регулярно заливать?
    вставка работает тем медленнее, чем больше индексов. поэтому есть такой прием массовой закачки:
    - создать таблицы без индексов
    - залить данные
    - добавить индексы
    ιιlllιlllι унц-унц
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 20 октября 2012 г. 20:16, спустя 5 часов 22 минуты 17 секунд

    там таблички чистятся перед импортом
    сколько строк всего в исходном csv ?
    Спустя 87 сек.
    могу предположить что стоит обновлять не всю БД, а лишь новую часть.
    в текущем варианте похоже БД создается заново каждый раз
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 21 октября 2012 г. 11:08, спустя 14 часов 52 минуты 5 секунд

    данные в записях меняются?
    если нет достаточно ввести поле с уникальным индексом и использовать
    INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
  • Magnum79

    Сообщения: 25 Репутация: N Группа: Кто попало

    Spritz 21 октября 2012 г. 16:34, спустя 5 часов 26 минут 44 секунды

    В таком варианте set allocate… требует больше 50 метров.
    Поставил - всё равно вылетает с ошибкой шаблона. Непойму почему.
    Есть еще варианты?
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 октября 2012 г. 16:45, спустя 11 минут 6 секунд

    map reduce тебе поможет + отключить переиндексацию на момент импорта
    Спустя 138 сек.
    кто вообще делает иморт, юзер? пусть ждет, на клиенте распилить на куски и постепенно отправить… пусть ждет…
  • Magnum79

    Сообщения: 25 Репутация: N Группа: Кто попало

    Spritz 21 октября 2012 г. 17:01, спустя 15 минут 21 секунду


    map reduce тебе поможет + отключить переиндексацию на момент импорта

    Можно подробнее в виде кода, а то я не джедай в пхп:)
  • Magnum79

    Сообщения: 25 Репутация: N Группа: Кто попало

    Spritz 21 октября 2012 г. 17:41, спустя 40 минут 38 секунд

    скоко ? И какое решение?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 21 октября 2012 г. 19:44, спустя 2 часа 2 минуты 8 секунд



    а мы посмотрим
    ιιlllιlllι унц-унц
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 21 октября 2012 г. 21:54, спустя 2 часа 10 минут 19 секунд

    Строк дохрена, около 5000. Времени на такую заливку примерно 5 минут.

    )))
    Work, buy, consume, die
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 октября 2012 г. 23:58, спустя 2 часа 4 минуты 8 секунд


    Строк дохрена, около 5000. Времени на такую заливку примерно 5 минут.

    )))
    ну да так то комино. должно быть секунд 5 максимум))))))
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!