|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
Привет всем. На Веб сервер помещается текстовый файл с данными с определенно периодичностью: Код: plaintext
Его нужно закачать в таблицу. Файл большой, на несколько десятков тысяч записей. В настоящее время задачу решаем через промежуточный файл, т.е. сначала скачиваем файл на локальный винт (утилитой wget), а дальше обычным импортом закачиваем в таблицу. Пробовали perl-им скриптом напрямую -- генерацией на лету INSERT ... VALUES ..., но это вариант очень долго работает, раза в четыре медленнее чем через промежуточный файл. Может кто подскажет способ быстрой закачки данных без создания промежуточного файла? ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 16:33 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
LWP::Simple не поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 16:49 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
fedd LWP::Simple не поможет дык, так через него и закачиваю данные во втором варианте (perl-ий скрипт), а как дальше их в БД закидывать? Через фирменный модуль mysql.pm все равно тормоза получаются. Я думал можно организовать закачку данных по конвейеру, что вроде Код: plaintext
но mysqlimport не поддерживает перенаправление данных... или я что-то неправильно делаю? Или это делается по другому? ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 17:19 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
в конвеерах не больно рублю, может, > или < поможет? в любом случае первый вариант самый быстрый, конечно же! проблема в месте на диске? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 17:28 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
feddв конвеерах не больно рублю, может, > или < поможет? это и есть механизм перенаправления данных. нет, не работает. проблемы в свободном месте, но быстрый вариант -- без промежуточных преобразований. учитывая объем данных, то загрузка данных идет длительная, больше часа, поэтому ускорение на несколько минут уже есть хорошо. К слову, у MySQL самая быстрая закачка данных, которую мне доводилось видеть... ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 17:52 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
подождите несколько _десятков_ тысяч записей -- больше часа????? Это, простите, как вы добились такого результата? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 20:41 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
больше часа идет _полная обработка_ данных. А файлов таких загружается несколько, если конкретно, то четыре штуки. в тексте предыдущего моего поста очепятка. если интерсено, могу подсказать конкретный вариант -- организуйте закачку данных через ODBC. ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2004, 21:03 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
Может попытаться использовать в Perl генерировать запрос множественный инсерт? Работает в разы быстрее. Может вставлять тысячи записей на запрос. Жизнь коротка - потерпи немного :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2004, 08:30 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
MaratL Может попытаться использовать в Perl генерировать запрос множественный инсерт? именно так и был реализован второй вариант. Скорость все равно ужасающе медленная. к тому же график изменения производительности от кол-ва вставляемых записей в одном операторе -- чашеподобный, т.е. существует определенный оптимум. В моем случае это было порядка 200 записей. ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2004, 12:12 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
1) вам надо внимательно посмотреть на ваш my.cnf. что-то у вас с настройками не то.. десятки тыщь записей - это немного.. К примеру (сейчас глянул на некоторые свои цифры) на dual PIII- 500MHz (согласись, не самая мощная машинка) примерно 500000 записей заливаются примерно за 600 секунд. В другом месте на той же машине 100_000 записей на 120..130 сек. Еще на той-же машине - 300_000 записей на примерно 400 сек. 2) Посмотри insert delayed по документации, может быть подойдет.. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2004, 12:51 |
|
Как закачать данные через веб?
|
|||
---|---|---|---|
#18+
Хрен2) Посмотри insert delayed по документации, может быть подойдет. нет, не подойдет: 1) данные заливаются одним большим блоком, когда нагрузки на сервер нет -- т.е. пользователь один -- процесс загрузки данных. 2) insert delayed -- это отложенная операция записи, в данном случае смысла особого не имеет, т.к. речь идет не о единичных и разрозрозненных вставок. ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2004, 14:49 |
|
|
start [/forum/topic.php?fid=47&msg=32469446&tid=1855275]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 132ms |
0 / 0 |