Forum Webscript.Ru

Программирование => PHP => Тема начата: Sen от 03 Августа 2005, 20:34:31

Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: Sen от 03 Августа 2005, 20:34:31
Здравствуйте.

На днях получил заказ на один крупный сайт, который представляет из себя двухуровневый каталог торговых предложений.

Они хранятся в софте 1С, поэтому как эспорт данных под сайт предлагают csv-файлы.

Сейчас такой файл содержит 22 тысячи позиций. В идеальном будущем может быть 50 тысяч.

Обновление базы данных предполагается каждую неделю - старая БД полностью очищается и создаётся новая. Компания-заказчик не желает делать все мелкие изменения прямо на сайте, тк они печатное издание и сайт - всего лишь приложение к журналу. Люди приходят в офис и там оформляются все предложения, бухгалтерия и т.п. - всё завязано на 1С-базе данных.

Нет ли у вас идей о том как лучше оптимизировать процесс обновления базы данных... как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.
Слишком долго скрипт будет выполняться.

Есть мысль дампить БД на простом компьютере и переносить на сервер, однако может быть проблемы с хостером в этом плане. Даст ли он так просто это делать... Кроме того, у сайта в БД будут лежать новости, прочие службы и они будут теряться. Получается, что переносить только некоторые таблицы, однако здесь я уже не очень представляю что можно сделать, чтобы было быстрее, чем простыми insert\'ами...

Как вы поступаете в таких случаях?

Я уже давно пересел сам на SQLite в PHP5 (и как плагин в PHP4), там удобны транзакции, без них очень тормознуто.
Не подскажете где можно почитать статьи о транзакциях MySQL в интернете? Пробовал искать, да всё не то.
Есть ли в них смысл, какие плюсы и принципы работы.



Спасибо, очень надеюсь, что здесь найдётся кто-нибудь, кто поможет советом, уже имея опыт с подобного рода обновлениями БД сайтов.
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: serezniy от 03 Августа 2005, 22:56:30
Цитировать
как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.
Слишком долго скрипт будет выполняться.

долго ? 1 или даже 2 минуты что ли ? :)
Цитировать
Есть мысль дампить БД на простом компьютере и переносить на сервер, однако может быть проблемы с хостером в этом плане. Даст ли он так просто это делать...

посмотри http://zapimir.net/skdumper/
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: Макс от 04 Августа 2005, 12:01:15
Цитировать
serezniy:
как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.

ничего, я несколько сотен тысяч делал  - и все ок.
Главное из под CLI это делать а не из под mod_php
Цитировать
Sen:
 Я уже давно пересел сам на SQLite в PHP5 (и как плагин в PHP4), там удобны транзакции, без них очень тормознуто.
в mysql уже давно есть транзакции (innodb)
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: Sen от 04 Августа 2005, 20:02:41
Макс
транзакции в данном случае дадут прирост какой-нибудь?

CLI - это когда PHP отдельно от Apache, правильно понимаю?
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: ThE0ReTiC от 05 Августа 2005, 08:59:54
Цитировать
Sen:
CLI - это когда PHP отдельно от Apache, правильно понимаю?

неправильно
CLI - Command Line Interface
Цитировать
Sen:
Кроме того, у сайта в БД будут лежать новости, прочие службы и они будут теряться. Получается, что переносить только некоторые таблицы, однако здесь я уже не очень представляю что можно сделать,

Импортировать только определенные таблицы.
Цитировать
Sen:
транзакции в данном случае дадут прирост какой-нибудь?

Транзакции в принципе совсем для другого прензаначены - не для увеличения быстродействия
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: Макс от 05 Августа 2005, 15:26:13
Цитировать
Sen:
транзакции в данном случае дадут прирост какой-нибудь?

сделай 2 тестовых скрипта - один с транзакциями, другой - без.
Выполни оба и замерь время.
Выводы сможешь сделать сам по результатам тестирования
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: Sen от 05 Августа 2005, 20:58:30
в общем, решение моей проблемы похоже лежит в использовании LOAD DATA INFILE ...

на сервак через веб-форму среднестатистическая секретарша будет загружать zip файл с 3-мя cvs-файлами (3 таблицы разные), которые скрипт будет конвертировать в что-то, что кушает LOAD DATA INFILE и здесь уже дело за mysql... в теории 10-20 раз быстрее, чем insert\'ами...

однако никто не подскажет какого формата этот файл должен быть? чтобы поля таблицы корректно заполнялись, разносились...
Название: Вопрос к опытным профессионалам по PHP+MySQL
Отправлено: ThE0ReTiC от 08 Августа 2005, 09:17:58
Sen
так ты в запросе сам задаешь, что разделитель полей, чем значения ограничены...
все ж описано (http://dev.mysql.com/doc/mysql/en/load-data.html)