Процесс MySQL использует более 100% загрузки процессора и требует около 1 ГБ памяти
Я использую сервер MySQL на сервере, который имеет следующие спецификации:
Dual Xeon Quad Core 2.0, 2048 МБ ОЗУ, 1x 160 ГБ SATA Fedora Core + SSH
Но процесс MySQL для вставки 10000 записей занимает более 100% процессорного времени и до 1 ГБ оперативной памяти. Это простое утверждение вставки.
Почему MySQL занимает так много памяти и что с этим можно сделать?
1 ответ
Самая тяжелая часть в вашем запросе это SELECT:
Select FirstName, LastName, CountryID, Address, Phone
From Test2.Customer
Where UserID Between 1 and 5000
and CustomerID in (Select CustId from Cust_Details Where CustName like 'Mi%')
Вложенный запрос, вероятно, повторяется для каждой строки. Вы можете проверить это работает EXPLAIN PLAN
+ весь запрос SELECT. Я предполагаю, что оператор like используется против неиндексированного столбца. В этом случае (like 'xyz%'
простой индекс может значительно повысить производительность.
[Добавлено: более того, SELECT CustId ... должен выводить идентификаторы, которые больше 5000, которые вообще не нужны. Составной индекс (CustId, CustName) для Cust_Details также должен быть полезен.]
Попробуйте вместо этого использовать объединение:
Select FirstName, LastName, CountryID, Address, Phone
From Test2.Customer c, Cust_Details cd
Where c.UserID Between 1 and 5000
and c.CustomerID=cd.CustId
and left(cd.CustName) = 'Mi'