Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP + MySQL] добавление большого кол-ва данных в таблицу / 14 сообщений из 14, страница 1 из 1
31.08.2005, 17:12
    #33244142
Duke1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
есть код добавления данных в таблицу примерно такого вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ob_start();
include("install.php");
$sql = ob_get_contents();
ob_end_clean();
$sql = explode("\n", $sql);
for($i= 0 ; (!empty($sql) && $i < sizeof($sql)); $i++)
{
if(!empty($sql[$i])) mysql_query ($sql[$i], $db);
}
в install.php много строк такого типа:
INSERT INTO table VALUES ('x','y');
INSERT INTO table VALUES ('xx','yy');

Все работает до тех пор, пока кол-во строк в install.php не очень большое. Если >700 строк или в таблицу ничего не добавляется или добавляется кусками. Куда копать?
...
Рейтинг: 0 / 0
31.08.2005, 17:23
    #33244176
.-.-.-.-.-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
http://dev.mysql.com/doc/mysql/en/insert-speed.html
...
Рейтинг: 0 / 0
31.08.2005, 17:35
    #33244217
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
Чему равно махимальное время исполнения скрипта - max_execution_time?
Очень похоже, что за время жизни скрипта скрипт не успевает втянуть все данные. Увеличьте время жизни скрипта или попробуйте выполнять не конструкции типа INSERT INTO `tbl_name`(...) VALUES(...), а выплонить LOAD DATA INFILE 'dump.txt' INTO TABLE `tbl_name`.
P.S. Порочная практика использовать в названиях таблиц, столбцов и т.д. зарезервированные слова.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
01.09.2005, 10:53
    #33245203
Duke1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
4m@t!cЧему равно махимальное время исполнения скрипта - max_execution_time?
=60, но, наверное, менять его, тем более программно это не есть хорошо и не всегда получится
4m@t!c
Очень похоже, что за время жизни скрипта скрипт не успевает втянуть все данные. Увеличьте время жизни скрипта или попробуйте выполнять не конструкции типа INSERT INTO `tbl_name`(...) VALUES(...), а выплонить LOAD DATA INFILE 'dump.txt' INTO TABLE `tbl_name`.
P.S. Порочная практика использовать в названиях таблиц, столбцов и т.д. зарезервированные слова.
это про "table"? Это для примера... На самом деле там вот такое:
Код: plaintext
INSERT INTO <?echo $oComponent->prefix; ?>statistic_browserlist VALUES ( 1 ,'GJK_browscap_Version','','browscap Version','','2004-02-15 19:12:01 GMT', 0 , 0 ,- 1 ,- 1 ,- 1 ,- 1 );
и поэтому через файл грузить будет гемморойно по причине не постоянной имени таблицы - нужны будут дополнительные телодвижения по обработке файла. Хотя если делать временный файл и его подсовывать...
...
Рейтинг: 0 / 0
01.09.2005, 11:23
    #33245345
VERS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
Duke1999=60, но, наверное, менять его, тем более программно это не есть хорошо и не всегда получится

А что здесь плохого? Хотя ... 700 записей в минуту в легкую должны по идее вставляться ... (если конечно они все такие, как вы указали)
...
Рейтинг: 0 / 0
01.09.2005, 11:32
    #33245390
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
у меня скрипты исполняются по 2,5 часа, потому что происходит втягивание по несколько миллионов записей с кучей проверок. И время исполнения скрипта выставлено соотвествующее. Сделал output_buffering=off + flush().
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
01.09.2005, 11:34
    #33245399
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
Как верно заметил господин VERS - 700 записей, втянутые за 60 секунд - это очень мало. Создайте профайлер и посмотрите, что "съедает" бОльшую часть времени исполнения скрипта..
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
01.09.2005, 11:39
    #33245425
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
Мб там какие-то навороченные индексы строятся...
...
Рейтинг: 0 / 0
01.09.2005, 11:43
    #33245447
Duke1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
VERSХотя ... 700 записей в минуту в легкую должны по идее вставляться ... (если конечно они все такие, как вы указали)
я не сказал, что их 700, я сказал, что когда их больше 700 (приблизительно методом тыка проверял) начинаются проблемы... на самом деле их в одном файле 41000, в другом 2500...
...
Рейтинг: 0 / 0
01.09.2005, 11:47
    #33245464
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
LOAD DATA INFILE - уместна/возможна?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
01.09.2005, 11:48
    #33245468
Duke1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
.-.-.-.-.-http://dev.mysql.com/doc/mysql/en/insert-speed.html
как написано здесь добавил в файлы
Код: plaintext
1.
2.
3.
LOCK TABLES table WRITE;
....
UNLOCK TABLES;
на локальной машине запросы выполняются влёт - полез проверять на хостинге...
...
Рейтинг: 0 / 0
01.09.2005, 11:51
    #33245479
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
Используйте расширенную вставку, она заметно быстрее. А мб даже INSERT DELAYED, по ситуации.
...
Рейтинг: 0 / 0
01.09.2005, 11:51
    #33245481
Duke1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
4m@t!cLOAD DATA INFILE - уместна/возможна?
название таблиц в insert непостоянно и зависит от префикса, поэтому не хотелось бы ворочать файлом в 5Мб подменяя название...
...
Рейтинг: 0 / 0
01.09.2005, 12:39
    #33245689
Duke1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP + MySQL] добавление большого кол-ва данных в таблицу
Duke1999 4m@t!cLOAD DATA INFILE - уместна/возможна?
название таблиц в insert непостоянно и зависит от префикса, поэтому не хотелось бы ворочать файлом в 5Мб подменяя название...
здесь сказал фигню, не прочитав про формат входного файла... LOAD DATA INFILE - это то что надо. Данные влетают в таблицы со свистом! Всем спасибо!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP + MySQL] добавление большого кол-ва данных в таблицу / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]