Forum Webscript.Ru
Программирование => PHP => Тема начата: Sen от 03 Августа 2005, 20:34:31
-
Здравствуйте.
На днях получил заказ на один крупный сайт, который представляет из себя двухуровневый каталог торговых предложений.
Они хранятся в софте 1С, поэтому как эспорт данных под сайт предлагают csv-файлы.
Сейчас такой файл содержит 22 тысячи позиций. В идеальном будущем может быть 50 тысяч.
Обновление базы данных предполагается каждую неделю - старая БД полностью очищается и создаётся новая. Компания-заказчик не желает делать все мелкие изменения прямо на сайте, тк они печатное издание и сайт - всего лишь приложение к журналу. Люди приходят в офис и там оформляются все предложения, бухгалтерия и т.п. - всё завязано на 1С-базе данных.
Нет ли у вас идей о том как лучше оптимизировать процесс обновления базы данных... как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.
Слишком долго скрипт будет выполняться.
Есть мысль дампить БД на простом компьютере и переносить на сервер, однако может быть проблемы с хостером в этом плане. Даст ли он так просто это делать... Кроме того, у сайта в БД будут лежать новости, прочие службы и они будут теряться. Получается, что переносить только некоторые таблицы, однако здесь я уже не очень представляю что можно сделать, чтобы было быстрее, чем простыми insert\'ами...
Как вы поступаете в таких случаях?
Я уже давно пересел сам на SQLite в PHP5 (и как плагин в PHP4), там удобны транзакции, без них очень тормознуто.
Не подскажете где можно почитать статьи о транзакциях MySQL в интернете? Пробовал искать, да всё не то.
Есть ли в них смысл, какие плюсы и принципы работы.
Спасибо, очень надеюсь, что здесь найдётся кто-нибудь, кто поможет советом, уже имея опыт с подобного рода обновлениями БД сайтов.
-
как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.
Слишком долго скрипт будет выполняться.
долго ? 1 или даже 2 минуты что ли ? :)
Есть мысль дампить БД на простом компьютере и переносить на сервер, однако может быть проблемы с хостером в этом плане. Даст ли он так просто это делать...
посмотри http://zapimir.net/skdumper/
-
serezniy:
как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.
ничего, я несколько сотен тысяч делал - и все ок.
Главное из под CLI это делать а не из под mod_phpSen:
Я уже давно пересел сам на SQLite в PHP5 (и как плагин в PHP4), там удобны транзакции, без них очень тормознуто.
в mysql уже давно есть транзакции (innodb)
-
Макс
транзакции в данном случае дадут прирост какой-нибудь?
CLI - это когда PHP отдельно от Apache, правильно понимаю?
-
Sen:
CLI - это когда PHP отдельно от Apache, правильно понимаю?
неправильно
CLI - Command Line InterfaceSen:
Кроме того, у сайта в БД будут лежать новости, прочие службы и они будут теряться. Получается, что переносить только некоторые таблицы, однако здесь я уже не очень представляю что можно сделать,
Импортировать только определенные таблицы.
Sen:
транзакции в данном случае дадут прирост какой-нибудь?
Транзакции в принципе совсем для другого прензаначены - не для увеличения быстродействия
-
Sen:
транзакции в данном случае дадут прирост какой-нибудь?
сделай 2 тестовых скрипта - один с транзакциями, другой - без.
Выполни оба и замерь время.
Выводы сможешь сделать сам по результатам тестирования
-
в общем, решение моей проблемы похоже лежит в использовании LOAD DATA INFILE ...
на сервак через веб-форму среднестатистическая секретарша будет загружать zip файл с 3-мя cvs-файлами (3 таблицы разные), которые скрипт будет конвертировать в что-то, что кушает LOAD DATA INFILE и здесь уже дело за mysql... в теории 10-20 раз быстрее, чем insert\'ами...
однако никто не подскажет какого формата этот файл должен быть? чтобы поля таблицы корректно заполнялись, разносились...
-
Sen
так ты в запросе сам задаешь, что разделитель полей, чем значения ограничены...
все ж описано (http://dev.mysql.com/doc/mysql/en/load-data.html)