mysql — время обработки PHP и загрузка процессора при сравнении миллионов строк

У меня есть инструмент, с которым можно сравнить одну строку, в среднем — 250 тысяч строк из базы данных.
В процессе сравнения используются две таблицы — category и category_strings. В таблице строк содержится около 2,5 миллионов строк, в то время как сводная таблица category_string содержит 7 миллионов строк.

Мой запрос довольно прост, выбирая строковые столбцы, присоединяясь к сводной таблице, добавляя предложение where для указания категории и устанавливая ограничение в 10 000.
Я запускаю этот запрос в цикле, каждая партия составляет 10 000 строк. Чтобы выполнить весь сценарий быстрее, я использую метод поиска вместо смещения MySQL, которое было слишком медленным при больших смещениях.
Затем, сравнивая обычными алгоритмами, такими как простой текст, левенштейн и т. Д., Выполняется каждая партия. Эта часть проста.

Вопрос начинается здесь.

На моем ноутбуке (lenovo x230) весь процесс, то есть сравнение 250 тыс. Строк, занимает: 7,4 секунды для загрузки SQL, 13,3 секунды для сравнения всех строк. А затем 0,1 секунды сортировки и преобразования для просмотра.

У меня также небольшой выделенный сервер. Та же версия PHP, тот же MySQL. Веб-сервер не имеет значения, так как я запускаю его из командной строки прямо сейчас. Так как на моем ноутбуке это занимает + — 20 секунд, на сервере — 120 секунд.

Итак, что является наиболее важным фактором для длительной программы PHP, который влияет на время выполнения? Все, о чем я могу думать, — это процессор, который на выделенном сервере хуже, это процессор Intel® Atom (TM) N2800 с частотой 1,86 ГГц. Потребление памяти довольно низкое, около 2-4%. Однако загрузка процессора на моем ноутбуке составляет около 60%, а на сервере — 99,7 — 100%.

Является ли ЦП наиболее важным фактором в этом случае? Есть ли способ, например, разделить его на несколько процессов, которые в целом заняли бы меньше времени? Несмотря на все, как контролировать загрузку процессора, какая часть скрипта наиболее потребляет.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector