beba
Новичок
Здравствуйте..
Стоит задача импорта данных из xls в MySQL.
Данные нужно заносить в три таблицы. Первая справочник, остальные две связь один ко многим.
Беру файл в 1000 строк. Загружаю его, предварительно провожу небольшие манипуляции регуляркой с данными файла, вношу данные в объект класса и вызываю метод добавить.
В методе происходит добавление в одну основную таблицу, получаю ид через tep_db_insert_id() и дальше добавляю информацию в две другие таблицы, в зависимости от условий.
Вроде все хорошо, за исключением того, что 1000 строчек добавляются примерно 120 секунд.
Оставляю один только первый запрос и только добавления одного поля, проверить. 1000 строк - 50-55 секунд.
Убираю только само выполнение запросов на добавление в БД и действия выполняются 1 секунду..
Север свой, 2 процессора Xeon E5310, 6Гб памяти. Таблицы в БД MYISAM. На сервере стояла настройка в mysql/my.cnf - "low-priority-updates", убрав ее ничего особенно не помогло (выиграл может пару секунд). На сервере два наших больших проекта, в среднем по 100-120 постоянных подключений к БД. Но сам север нельзя сказать, что нагружен.. htop выдает - Load average: 0.75 0.85 0.84.
Попробовал сделать bulk в первом запросе, файл импортировался за 1-2 секунды.
Так вот вопрос, а как мне insert_id выцепить для других таблиц..?..
mysql_insert_id - выдает первый ид. т.е. в принципе если блокировать таблицу, добавлять порциями, то я всегда могу к первому ид добавить количество добавленных строк и получу для всех идшки..
Не кривовато ли?
может кто нибудь с подобным сталкивался?.. может есть совет?..
И вообще, скорость выполнения insert запроса не слишком медленная?
Спасибо..
p.s. спасибо и за то, что дочитали до конца этот пост
Стоит задача импорта данных из xls в MySQL.
Данные нужно заносить в три таблицы. Первая справочник, остальные две связь один ко многим.
Беру файл в 1000 строк. Загружаю его, предварительно провожу небольшие манипуляции регуляркой с данными файла, вношу данные в объект класса и вызываю метод добавить.
В методе происходит добавление в одну основную таблицу, получаю ид через tep_db_insert_id() и дальше добавляю информацию в две другие таблицы, в зависимости от условий.
Вроде все хорошо, за исключением того, что 1000 строчек добавляются примерно 120 секунд.
Оставляю один только первый запрос и только добавления одного поля, проверить. 1000 строк - 50-55 секунд.
Убираю только само выполнение запросов на добавление в БД и действия выполняются 1 секунду..
Север свой, 2 процессора Xeon E5310, 6Гб памяти. Таблицы в БД MYISAM. На сервере стояла настройка в mysql/my.cnf - "low-priority-updates", убрав ее ничего особенно не помогло (выиграл может пару секунд). На сервере два наших больших проекта, в среднем по 100-120 постоянных подключений к БД. Но сам север нельзя сказать, что нагружен.. htop выдает - Load average: 0.75 0.85 0.84.
Попробовал сделать bulk в первом запросе, файл импортировался за 1-2 секунды.
Так вот вопрос, а как мне insert_id выцепить для других таблиц..?..
mysql_insert_id - выдает первый ид. т.е. в принципе если блокировать таблицу, добавлять порциями, то я всегда могу к первому ид добавить количество добавленных строк и получу для всех идшки..
Не кривовато ли?
может кто нибудь с подобным сталкивался?.. может есть совет?..
И вообще, скорость выполнения insert запроса не слишком медленная?
Спасибо..
p.s. спасибо и за то, что дочитали до конца этот пост
