|
|
|
| как сделать чтобы большие файлы быстро читались построчно и заносились в мускул?
100 мб скрипт из предыдущего поста выполняет за 5,669.572 sec :)
почти полтора часа...
может как бинарный его открывать?? (с ключем "rb") | |
|
|
|
|
|
|
|
для: kaoz
(01.06.2006 в 18:49)
| | Фрагмент большого файла и структуру таблицы в студию. | |
|
|
|
|
|
|
|
для: Trianon
(01.06.2006 в 19:05)
| | в аттаче полностью скрипт... с sql файлом и примером лога
что самое интересное php.exe в процессах всего 1 мег ест пока выполняет скрипт | |
|
|
|
|
|
|
|
для: kaoz
(02.06.2006 в 08:16)
| | забыл еще сказать, что нужно кое-какие поля обрезать перед записью в БД и ставить в некоторых полях экранирующие кавычки | |
|
|
|
|
|
|
|
для: kaoz
(02.06.2006 в 09:11)
| | Глядите, в тот пример. ТАм показано, как именно за один запрос к MySQL, можно вставить в базу много записей. Сейчас у Вас основные потери времени на том, что записи в базу вставляются по одной. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 10:05)
| | читал и нифига не понял почему сразу закидываются все строки блока...
немогли бы вы прокомментировать этот кусок кода?
там только перемещена функция записи в БД за foreach... в этом веся хитрость?? немогу понять почему? | |
|
|
|
|
|
|
|
для: kaoz
(02.06.2006 в 10:20)
| | А если поднять приоритет Apache, php и mysql в системе? | |
|
|
|
|
|
|
|
для: .link
(02.06.2006 в 10:26)
| | я думаю это не поможет | |
|
|
|
|
|
|
|
для: kaoz
(02.06.2006 в 10:20)
| | кажеться понял в чем хитрость
там получается такой запрос
INSERT INTO table VALUES (...), (...), (...), (...), ..., (...)
в этом хитрость? | |
|
|
|
|
|
|
|
для: kaoz
(02.06.2006 в 10:26)
| | теперь реализуйте.
Только учтите, что слишком большие запросы тоже ни к чему хорошему не приводят.
Не стоит начинать с блока размером в мегабайт. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 10:47)
| | почему мег? много?
сколько изучаю AMP все время всякие новые замуты узнаю... то не дочитал где-то что-то, то про это нигде не написано... форум спасает тока :) | |
|
|
|
|
|
|
|
для: kaoz
(02.06.2006 в 12:02)
| | Просто в MySQL часто стоит ограничение на размер запроса (параметр max_allowed_packet), который по умолчанию принимает значение не то 1, не то 2 Мб. Если вам потребуется увеличить размер запроса - следует добавить в конфигурационный файл my.ini строки
Кроме того, PHP-скрипт тоже ограничен в памяти, при помощи директивы memory_limit конфигурационного файла php.ini
| |
|
|
|
|
|
|
|
для: cheops
(02.06.2006 в 12:17)
| | Коме того, ускорение процесса вовсе не пропорционально росту размера блока.
и если сперва мы увеличим блок в 200 раз (чтоб в нем помещалось 200 строк) и увидим увеличение быстродействия, допустим, в 100 раз, а потом увеличим еще в 200 раз ( и в него залезет 40 000 строк), то роста скорости в 10 000 раз против исходной мы не увидим.
А если при этом процессы перестанут лезть в общую физическую память, и начнется своппинг, то мы увидим, наоборот, сплошные тормоза.
to kaoz: об этом тоже писалось в исходной теме. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 12:46)
| | прошу прощения за повторы... спасибо огромное, мне это очень сильно помогло... | |
|
|
|