Автор Тема: Вопрос к опытным профессионалам по PHP+MySQL  (Прочитано 4631 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sen

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Здравствуйте.

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

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

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

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

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

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

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

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



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

Оффлайн serezniy

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #1 : 03 Августа 2005, 22:56:30 »
Цитировать
как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.
Слишком долго скрипт будет выполняться.

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

посмотри http://zapimir.net/skdumper/

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #2 : 04 Августа 2005, 12:01:15 »
Цитировать
serezniy:
как-то 20-50 тысяч запросов в БД делать очень боязно. Можно, но не по людски это.

ничего, я несколько сотен тысяч делал  - и все ок.
Главное из под CLI это делать а не из под mod_php
Цитировать
Sen:
 Я уже давно пересел сам на SQLite в PHP5 (и как плагин в PHP4), там удобны транзакции, без них очень тормознуто.
в mysql уже давно есть транзакции (innodb)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Sen

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #3 : 04 Августа 2005, 20:02:41 »
Макс
транзакции в данном случае дадут прирост какой-нибудь?

CLI - это когда PHP отдельно от Apache, правильно понимаю?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #4 : 05 Августа 2005, 08:59:54 »
Цитировать
Sen:
CLI - это когда PHP отдельно от Apache, правильно понимаю?

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

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

Транзакции в принципе совсем для другого прензаначены - не для увеличения быстродействия
AS IS...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #5 : 05 Августа 2005, 15:26:13 »
Цитировать
Sen:
транзакции в данном случае дадут прирост какой-нибудь?

сделай 2 тестовых скрипта - один с транзакциями, другой - без.
Выполни оба и замерь время.
Выводы сможешь сделать сам по результатам тестирования
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Sen

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #6 : 05 Августа 2005, 20:58:30 »
в общем, решение моей проблемы похоже лежит в использовании LOAD DATA INFILE ...

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

однако никто не подскажет какого формата этот файл должен быть? чтобы поля таблицы корректно заполнялись, разносились...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос к опытным профессионалам по PHP+MySQL
« Ответ #7 : 08 Августа 2005, 09:17:58 »
Sen
так ты в запросе сам задаешь, что разделитель полей, чем значения ограничены...
все ж описано
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28