Здравствуйте. Я, используя php XmlReader, распаршиваю большой xml файл и записываю в mysql. Но получается довольно медленно (60 тыс строк за 7 мин). То есть с такой скоростью мне понадобится несколько дней. Может можно расположить mysql сервер в облаке, так будет побыстрее? И как-нибудь распараллелить этот процесс. Подскажите пожалуйста способы ускорить всё это. И расскажите, пожалуйста, про то, какие именно параметры (CPU, RAM, DISK) в приоритете влияют на быстроту записи в mysql?
P.S. Мой вопрос не касается того как оптимизировать sql запрос.
вы можете сделать параметры в своем скрипте вроде --offset 0 --max 10000
потом запустить несколько скриптов параллельно с разными параметрами, чтобы они не пересекались (т.е. чтобы скрипты работали с разными данными)
вот вам бюджетный параллелизм
пробовал так разделить и запустить два скрипта. Это не увеличивает скорость, т.к. каждый скрипт после этого записывает в mysql данные в два раза медленнее.
Mo1she, а потом вы говорите "ваш вопрос не касается оптимизации запросов". Еще как касается.
Угадываю, что вы в цикле генерируете инсерт запросы и тут же их выполняете. Из-за этого создается равномерная постоянная нагрузка на базу данных.
Включение другого скрипта создает такую же нагрузку и производительность падает.
Просто перепишите процесс вставки нормально и будет вам быстродействие без облачных серверов и всего такого. Аппаратные улучшения имеют смысл тогда когда программные средства оптимизации уже исчерпаны. Это не ваш случай.
Спасибо. Вместо того, чтобы делать вставку в таблицу на каждой итерации, теперь я собираю в кучу и делаю вставку по 1000 строк за раз. Это ускорило работу в 5 раз. Но это всё равно медленно. Однако запуск в таком виде нескольких скриптов одновременно опять же не ускоряет работу, а всё так же как было раньше время каждого скрипта увеличивается.